我有一个带有标签,按钮和文本框的网格 . 我想将标签forground设置为红色,将按钮属性“IsEnabled”设置为False,如果label.Content =“Invalid”的值 . 但是我无法将setter设置为此数据触发器中的targetname,因为“无法在样式设置器上设置Targetame属性” . 我怎么能解决这个问题,所以我只需要1个触发器即可为多个元素使用setter,我知道我可以在Button.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:如果我评论第二个二传手,那么它可以工作,(如果标签的值=“无效”,那么forground变成红色
1 回答
请查看this msdn forum以获得您问题的答案
你的触发器部分也是incorect,你应该使用:
当您计划监视元素的属性(如内容)时,请使用触发器 .
为了使您的示例工作:
绑定按钮's IsEnabled property to your label'的内容并实现将字符串转换为bool的转换器
使用设置IsEnabled属性的数据触发器为按钮创建样式