Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 更改Textbox ValidationRule上的依赖项属性值_Wpf_Validation_Binding_Dependency Properties_Datatrigger - Fatal编程技术网

Wpf 更改Textbox ValidationRule上的依赖项属性值

Wpf 更改Textbox ValidationRule上的依赖项属性值,wpf,validation,binding,dependency-properties,datatrigger,Wpf,Validation,Binding,Dependency Properties,Datatrigger,我实现了从ContentControl继承的自定义控件,该控件具有名为“CanNavigate”(bool)的依赖属性 在Window.xaml中,我有一个文本框,其中包含一些ValidationRule检查文本框是否为空。我想根据Textbox.Validation.HasError将“CanNavigate”设置为true/false,如下代码所示: <Style TargetType="{x:Type TextBox}"> <Style.Trigge

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

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

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

    
    
  • 关于第二个setter:在setter中定义属性时,不需要指定绑定,只需提供如下属性名称:

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