0

我已经实现了继承自 ContentControl 的自定义控件,它具有名为“CanNavigate”(布尔)的依赖属性。

在 Window.xaml 中,我有一个文本框,其中包含一些 ValidationRule 检查文本框是否为空。我想根据 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 属性。

问候, 帕蒂尔

4

1 回答 1

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

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

    <Setter Property="CanNavigate" Value="False" />
    
于 2013-01-24T16:13:58.130 回答