【问题标题】:Why Trigger collection doesnt allow Data Triggers为什么触发器集合不允许数据触发器
【发布时间】:2014-01-10 15:01:21
【问题描述】:

为什么触发器集合不允许数据触发器和除事件触发器之外的其他触发器?

<StackPanel Orientation="Horizontal">
    <Label Name="LblHeader"
                           Margin="10,0,10,0"
                           Content="Test"
                           FontWeight="Bold"
                           Foreground="SteelBlue" />
    <Button Name="BtnAttach" Content="_Attach"/>

    <StackPanel.Triggers>
        <DataTrigger Binding="{Binding IsEnabled, RelativeSource={RelativeSource FindAncestor, AncestorType=StackPanel }}" Value="False">
            <Setter TargetName="LblHeader" Property="Label.Foreground" Value="Gray" />
        </DataTrigger>
    </StackPanel.Triggers>
</StackPanel>

【问题讨论】:

    标签: wpf triggers


    【解决方案1】:

    可以在四个级别指定触发器....

    1. ControlTemplate 级别
    2. DataTemplate 级别
    3. Style级别
    4. UIElement 级别。

    DataTrigger 仅在前三个级别起作用。理想情况下,它应该只用于第二种情况,即StyleDataTemplate

    但首先你能澄清一下你对这段代码的意图是什么吗?

    当 StackPanel 被禁用时,是否要将 Label 文本显示为 Gray

    如果是这样,IsEnabled 属性是一个可继承的依赖属性,这意味着它将应用于禁用的父级可视树下的所有元素。

    所以如果StackPanel 被禁用,那么它下面的Label 也会被禁用。

    在这种情况下,PropertyTrigger 就足够了,如下所示...

     <StackPanel Orientation="Horizontal">
        <Label Name="LblHeader"
               Margin="10,0,10,0"
               Content="Test"
               FontWeight="Bold">
          <Label.Style>
            <Style TargetType="Label"> 
              <Setter Property="Foreground" Value="SteelBlue" />
              <Style.Triggers>
                <Trigger Property="IsEnabled" Value="False">
                    <Setter Property="Foreground" Value="Gray" />
                </Trigger>
              </Style.Triggers>
            </Style>
          </Label.Style>
        </Label>  
        <Button Name="BtnAttach" Content="_Attach"/>        
    </StackPanel>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-23
      • 1970-01-01
      • 2010-11-18
      • 1970-01-01
      • 2012-04-13
      • 2021-11-24
      相关资源
      最近更新 更多