我有一个应用程序,我想将所有使用特定样式的文本框设置为具有默认绑定设置为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
的一部分,也与没有任何关系。