C# 触发器上的WPF在不同控件上执行多个设置器

C# 触发器上的WPF在不同控件上执行多个设置器,c#,wpf,xaml,setter,datatrigger,C#,Wpf,Xaml,Setter,Datatrigger,我有一个带有标签、按钮和文本框的网格。我想将标签forground设置为红色&如果标签的值为False,则按钮属性“IsEnabled”设置为False。Content=“Invalid”。但是,我无法在此datatrigger中将setter设置为targetname,因为 “不能在样式设置器上设置TargetName属性。”如何解决此问题,以便我可以使用多个元素的设置器,只需一个触发器,我知道我可以在按钮中放置完全相同的datatrigger。Styletriggers,但也许有更好的方法来

我有一个带有标签、按钮和文本框的网格。我想将标签forground设置为红色&如果标签的值为False,则按钮属性“IsEnabled”设置为False。Content=“Invalid”。但是,我无法在此datatrigger中将setter设置为targetname,因为 “不能在样式设置器上设置TargetName属性。”如何解决此问题,以便我可以使用多个元素的设置器,只需一个触发器,我知道我可以在按钮中放置完全相同的datatrigger。Styletriggers,但也许有更好的方法来执行tihs

   <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属性的数据触发器为按钮创建样式

有什么特别的原因让你想在这里使用隐式样式吗?你的意思不是吗?@Baboon我不知道,但它不一样吗?它不一样。隐式样式是为特定框架元素的全局设置器设计的。现在,我相信你只将该样式应用于标签的子项,而不是标签本身。我可以不过我错了。