在Textbox ValidationRule上更改依赖项属性值

时间:2013-01-24 16:02:30

标签: wpf validation binding dependency-properties datatrigger

我已经实现了从ContentControl继承的Custom Control,它具有名为“CanNavigate”(bool)的依赖项属性。

在Window.xaml中,我有一个文本框,其中有一些ValidationRule检查Textbox空白。我想根据TextBox.Validation.HasError将“CanNavigate”设置为true / false,如下所示代码:

  <Style  TargetType="{x:Type TextBox}">
        <Style.Triggers>
            <Trigger Property="Validation.HasError" Value="true">
                <Setter Property="ToolTip"
            Value="{Binding RelativeSource={RelativeSource Self},
        Path=(Validation.Errors)[0].ErrorContent}"/>
                <Setter Property="{Binding CanNavigate}" Value="false"></Setter>
            </Trigger>                
        </Style.Triggers>           
    </Style>

使用此代码,会出现错误“'Property'属性不能在Setter上使用标记扩展或属性元素语法。只有Value属性可以使用标记扩展或属性元素语法。对象'System.Windows.Setter'中的错误标记文件“

有没有办法可以根据TextBox.validationError设置CanNavigate属性。

此致 帕蒂尔

1 个答案:

答案 0 :(得分:0)

  • 关于你的第一个setter我认为你应该用ToolTip属性上的Binding替换这个setter,并在必要时使用ValueConverter,触发器不能。 最好这样做(注意我没有测试过这段代码,我只是想指出这种方式):

    <TextBox ... ToolTip="{Binding RelativeSource={RelativeSource Self}, Path=(Validation.Errors)[0].ErrorContent}"  />
    
  • 关于第二个setter:在定义属性时的setter中,您不需要指定Binding,只需提供属性名称,如下所示:

    <Setter Property="CanNavigate" Value="False" />