【问题标题】:WPF on trigger do multiple setters on different controls触发器上的 WPF 在不同的控件上执行多个设置器
【发布时间】:2012-03-14 12:25:04
【问题描述】:

我得到了一个带有标签、按钮和文本框的网格。如果 label.Content 的值 =“Invalid”,我想将标签前景设置为红色,并将按钮属性“IsEnabled”设置为 False。但是我无法在此数据触发器中将设置器设置为目标名称,因为 “无法在样式设置器上设置 Targetame 属性。”我该如何解决这个问题,这样我就可以只用一个触发器对多个元素使用 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:如果我评论了第二个 setter,那么它就可以工作,(如果标签的值 = "Invalid" 那么前景变成红色

【问题讨论】:

  • 您想在这里使用隐式样式有什么特别的原因吗?你不是说 吗?
  • @Baboon 我不知道但不一样吗?
  • 不一样。隐式样式适用于特定 FrameworkElement 的全局设置器。现在,我相信您只是将该样式应用于标签的子项,而不是标签本身。不过我可能是错的。

标签: c# wpf xaml setter datatrigger


【解决方案1】:

请查看this msdn forum 以获得您的问题的答案

您的触发器部分也不正确,您应该使用:

<Style.Triggers>
   <Trigger Property="Content" Value="Invalid">
      <Setter Property="Foreground" Value="Red" />
   </Trigger>
</Style.Triggers>

当您计划监控元素的属性(如内容)时,请使用触发器。

为了让您的示例工作:

  • 将按钮的 IsEnabled 属性绑定到标签的内容并实现将字符串转换为布尔值的转换器
  • 使用设置 IsEnabled 属性的数据触发器为按钮创建样式

【讨论】:

    猜你喜欢
    • 2011-06-28
    • 2010-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-01
    • 1970-01-01
    • 2023-03-19
    • 2011-05-20
    相关资源
    最近更新 更多