我已经实现了从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属性。
此致 帕蒂尔
答案 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" />