Как установить свойство в триггере, если оно пустое? - PullRequest
4 голосов
/ 14 марта 2011

Как установить свойство в триггере, если оно пустое?

<Style.Triggers>
    <Trigger Property="ContextMenu" Value="{x:Null}">
        <Setter Property="ContextMenu" Value="{DynamicResource ContextMenu}"/>
     </Trigger>
</Style.Triggers>

Ответы [ 2 ]

0 голосов
/ 17 марта 2011

Вы можете просто установить ContextMenu прямо в вашем стиле следующим образом:

<Style ...>
    <Setter Property="ContextMenu" Value="{DynamicResource ContextMenu}"/>
</Style>

Если пользователь явно устанавливает ContextMenu, он будет иметь приоритет над установщиком стиля. См. Эту статью MSDN , где указан порядок или приоритет. Ваша установка стиля подпадает под # 8, в то время как пользовательская настройка на # 3.

0 голосов
/ 14 марта 2011

Вы пробовали?

<Style.Triggers>
    <DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=Self}, Path=ContextMenu}" Value="{x:Null}">
        <Setter Property="ContextMenu" Value="{DynamicResource ContextMenu}"/>
     </DataTrigger>
</Style.Triggers>

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

...