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

Jos*_*eld 2 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>
Run Code Online (Sandbox Code Playgroud)

Rac*_*hel 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>
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅MSDN关于依赖属性优先级的文章