如何通过DataTrigger设置Panel.ZIndex或其他附加属性?

时间:2012-03-20 18:45:11

标签: wpf datatrigger attached-properties

当某个视图模型进入脱机状态时,我试图将圆形叠加层置于顶部。因此它变得部分透明,并且在网格中的其他元素之上。

样式中的DataTriggers到目前为止一切都有效,但我无法设置Panel.ZIndex。构建或运行中没有错误,但是没有设置属性(我假设它是附加属性?)

<Ellipse Fill="DarkGray" Panel.ZIndex="-10" Width="50" Height="50">
  <Ellipse.Style TargetType="Ellipse">
    <Style>
      <Style.Triggers>
        <DataTrigger Binding="{Binding Status}" Value="Offline">
            <Setter Property="Opacity" Value=".6" />
            <Setter Property="Panel.ZIndex" Value="10" />
        </DataTrigger>
      </Style.Triggers>
    </Style>
  </Ellipse.Style>
</Ellipse>

1 个答案:

答案 0 :(得分:7)

您的语法正确,但问题是您在Panel.ZIndex标记中定义<Ellipse>,并且标记本身中设置的属性将优先于任何触发的值。

要解决此问题,只需在您的样式中设置Panel.ZIndex,而不是Ellipse标记

<Ellipse Fill="DarkGray" Width="50" Height="50">
  <Ellipse.Style TargetType="Ellipse">
    <Style>
      <Setter Property="Panel.ZIndex" Value="-10" />
      <Style.Triggers>
        <DataTrigger Binding="{Binding Status}" Value="Offline">
            <Setter Property="Opacity" Value=".6" />
            <Setter Property="Panel.ZIndex" Value="10" />
        </DataTrigger>
      </Style.Triggers>
    </Style>
  </Ellipse.Style>
</Ellipse>

有关详细信息,请参阅MSDN上有关Dependency Property Precedence的文章