Как установить Panel.ZIndex или другие прикрепленные свойства через DataTrigger? - PullRequest
2 голосов
/ 20 марта 2012

Я пытаюсь, чтобы круговое наложение достигло вершины, когда определенная модель представления переходит в автономное состояние. Таким образом, он становится частично прозрачным и поверх других элементов в сетке.

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 Ответ

7 голосов
/ 20 марта 2012

У вас правильный синтаксис, однако проблема в том, что вы определяете 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 по Приоритет свойства зависимостей для получения дополнительной информации.

...