当文本框的文本框属性IsEnabled = False
为Validation.HasErrors
时,我想使用某种触发器将窗口中的按钮更改为True
。
我可以使用按钮上的某种触发器来执行此操作吗?
如果是的话,一些例子会很好!
答案 0 :(得分:4)
您可以使用样式执行此操作。如果要将其直接绑定到文本框,可以执行以下操作:
<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>
<TextBox x:Name="myTextBox" />
<Button Style="{StaticResource DisabledOnErrors}"
DataContext="{Binding ElementName=myTextBox}" />
如果按钮尚未绑定到其他属性的DataContext,则此方法有效。在这种情况下,Style可以重复用于其他按钮和文本框配对。
答案 1 :(得分:2)
是的,您可以使用触发器执行此操作,但因为您指的是另一个元素,您必须使用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>
请注意,您必须使用Style而不是Button.Triggers集合,因为Button.Triggers只能包含EventTriggers。