如果属性为null,如何在触发器中设置属性?

时间:2011-03-14 03:59:15

标签: wpf triggers null properties

如果属性为null,如何在触发器中设置属性?

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

2 个答案:

答案 0 :(得分:0)

你试过吗?

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

但实际上你应该在控件的样式中设置上下文菜单,然后控件的任何用户都可以在派生样式或控件属性中覆盖它。

答案 1 :(得分:0)

您可以直接在Style中设置ContextMenu,如下所示:

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

如果用户明确设置了ContextMenu,那么它将优先于Style setter。有关订单或优先顺序,请参阅此MSDN article。您的样式设置器属于#8,而用户设置位于#3。