如何为应用程序中的所有文本框设置目标空值默认值?



我有一个应用程序,我想将所有使用特定样式的文本框设置为具有默认绑定设置为TargetNullValue='',方法是将其包含在文本框的样式定义中。

例如,我有一个窗口,为文本框设置了以下默认样式

<baseTypes:WorkspaceViewBase.Resources>
...
<Style TargetType="TextBox" BasedOn="{StaticResource TextBoxValidation}">
<Setter Property="Width" Value="100" />
</Style>
...
</baseTypes:WorkspaceViewBase.Resources>

其中一个文本框当前设置为

<TextBox Grid.Row="1" Grid.Column="1" Text="{Binding MyValue, TargetNullValue=''}" Visibility="{Binding MyVisibility}"/>

如何将"文本框验证"样式设置为包含TargetNullValue='',以便所有文本框都将其作为默认值?

可以创建自定义绑定类型,用于设置TargetNullValue属性的默认值:

public class MyBinding : Binding
{
public MyBinding()
: base()
{
TargetNullValue = string.Empty;
}
public MyBinding(string path)
: base(path)
{
TargetNullValue = string.Empty;
}
}

并将 XAML 标记中的所有{Binding}替换为此标记:

<TextBox Grid.Row="1" Grid.Column="1" Text="{local:MyBinding MyValue}" Visibility="{Binding MyVisibility}"/>

但是,您不能使用Style执行此操作,因为{Binding}不是Style的一部分,也与没有任何关系。

最新更新