C# 触发器上的WPF在不同控件上执行多个设置器
我有一个带有标签、按钮和文本框的网格。我想将标签forground设置为红色&如果标签的值为False,则按钮属性“IsEnabled”设置为False。Content=“Invalid”。但是,我无法在此datatrigger中将setter设置为targetname,因为 “不能在样式设置器上设置TargetName属性。”如何解决此问题,以便我可以使用多个元素的设置器,只需一个触发器,我知道我可以在按钮中放置完全相同的datatrigger。Styletriggers,但也许有更好的方法来执行tihsC# 触发器上的WPF在不同控件上执行多个设置器,c#,wpf,xaml,setter,datatrigger,C#,Wpf,Xaml,Setter,Datatrigger,我有一个带有标签、按钮和文本框的网格。我想将标签forground设置为红色&如果标签的值为False,则按钮属性“IsEnabled”设置为False。Content=“Invalid”。但是,我无法在此datatrigger中将setter设置为targetname,因为 “不能在样式设置器上设置TargetName属性。”如何解决此问题,以便我可以使用多个元素的设置器,只需一个触发器,我知道我可以在按钮中放置完全相同的datatrigger。Styletriggers,但也许有更好的方法来
<Button Content="Save" Click="btnsave_Click" Grid.Column="1" Grid.Row="2" x:Name="btnsave" IsEnabled="True" />
<Label Content="{Binding ElementName=txtclc, Path=Text, Converter={StaticResource convertcode}}" Name="lblcheckclc" Grid.Row="1" Grid.Column="2">
<Label.Resources>
<Style TargetType="{x:Type Label}">
<Setter Property="Foreground" Value="Green" />
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=lblcheckclc, Path=Content}" Value="Invalid">
<Setter Property="Foreground" Value="Red" />
<Setter TargetName="btnsave" Property="IsEnabled" Value="False" /> <!--This line is the problem-->
</DataTrigger>
</Style.Triggers>
</Style>
</Label.Resources>
</Label>
PS:如果我对第二个setter进行了注释,那么它就起作用了,(如果label=“Invalid”的值,则前面的部分变为红色请查看您的问题的答案
此外,触发器部分是不正确的,您应该使用:
<Style.Triggers>
<Trigger Property="Content" Value="Invalid">
<Setter Property="Foreground" Value="Red" />
</Trigger>
</Style.Triggers>
当您计划监视类似元素内容的属性时,请使用触发器
要使示例发挥作用,请执行以下操作之一:
- 将按钮的IsEnabled属性绑定到标签的内容,并实现将字符串转换为bool的转换器
- 使用设置IsEnabled属性的数据触发器为按钮创建样式