C# 根据其他控件-WPF中的属性更改属性
当文本框属性C# 根据其他控件-WPF中的属性更改属性,c#,wpf,triggers,C#,Wpf,Triggers,当文本框属性验证时,我想使用某种触发器将窗口中的按钮更改为IsEnabled=False。我的文本框的HasErrors为True 我可以用按钮上的某种触发器来完成吗 如果是的话,举个例子就好了 是的,您可以使用触发器执行此操作,但由于您引用的是另一个元素,因此必须使用DataTrigger而不是普通触发器: <Button> <Button.Style> <Style TargetType="Button"> <Style.Tr
验证时,我想使用某种触发器将窗口中的按钮更改为IsEnabled=False
。我的文本框的HasErrors
为True
我可以用按钮上的某种触发器来完成吗
如果是的话,举个例子就好了 是的,您可以使用触发器执行此操作,但由于您引用的是另一个元素,因此必须使用DataTrigger而不是普通触发器:
<Button>
<Button.Style>
<Style TargetType="Button">
<Style.Triggers>
<DataTrigger Binding="{Binding (Validation.HasError), ElementName=tb}" Value="True">
<Setter Property="IsEnabled" Value="False" />
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
注意:您必须使用样式而不是Button.Triggers集合,因为Button.Triggers只能包含EventTriggers。您可以使用样式来完成此操作。如果要将其直接绑定到文本框,可以执行以下操作:
<Style x:Key="DisabledOnErrors" TargetType="{x:Type Button}">
<Style.Triggers>
<DataTrigger Binding="{Binding (Validation.HasErrors)}" Value="True">
<Setter Property="IsEnabled" Value="False"/>
</DataTrigger>
</Style.Triggers>
</Style>
如果按钮尚未绑定到其他属性的DataContext,则此操作有效。在这种情况下,该样式可用于其他按钮和文本框配对。WPF TextBox对象没有验证属性-我缺少什么吗?Jake:您缺少了验证。HasError attached属性。@itowlson:谢谢,如果我不是唯一一个还需要了解WPF的人,请发布此内容;)是否可以为一个按钮应用于多个文本框?您可以尝试使用多重绑定和自定义IMultiValueConverter。我在这些方面没有太多经验,但总体思路是使用下面显示的ElementName语法itowlson将按钮IsEnabled直接绑定到绑定到所有文本框(Validation.HasErrors)的多重绑定。然后需要一个IMultiValueConverter,它将获取bool值的列表,然后不将它们全部进行ORing。我正在尝试使用图像和可见性属性,但它不起作用。当我使用按钮(具有可见性属性)时,它确实起作用。我就是不明白为什么。有什么想法吗?谢谢,马克。
<TextBox x:Name="myTextBox" />
<Button Style="{StaticResource DisabledOnErrors}"
DataContext="{Binding ElementName=myTextBox}" />