2012-03-20 3 views
2

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

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> 

ответ

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 для получения дополнительной информации

+0

Спасибо - я понял, в какой-то момент, что удаление локального свойства исправил это, но я понятия не имел, почему. Статья MSDN будет очень полезна. –

+0

Как насчет того, чтобы обозначить это как ответ, поскольку это помогло вам? – HiredMind