【问题标题】:Change Dependency Property value on Textbox ValidationRule更改文本框验证规则上的依赖属性值
【发布时间】:2013-01-08 10:59:24
【问题描述】:

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

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

  <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 属性。

问候, 帕蒂尔

【问题讨论】:

    标签: wpf validation binding dependency-properties datatrigger


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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多