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

时间:2018-02-05 16:03:27

标签: wpf data-binding

我有一个应用程序,我希望将所有使用特定样式的文本框设置为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}"/>

如何设置&#39; TextBoxValidation&#39;样式最多包括TargetNullValue=''所以所有的texbox都包含它作为默认值?

1 个答案:

答案 0 :(得分:2)

您可以创建一个自定义绑定类型,为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,也不属于Loop Until rgfound.Offset(0, 3).Value = MyInputTwo.Value