2011-03-14 44 views
4

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

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

你是否试图设置ContextMenu,只有当用户没有设置它时? – CodeNaked 2011-03-17 01:49:44

+0

是的,我试图设置ContextMenu,只有当用户没有设置。 – 2011-03-17 12:37:41

回答

0

你可以简单地直接设置文本菜单中你的风格像这样:

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

如果用户设置的ContextMenu明确,那么将优先于样式的制定者。有关顺序或优先顺序,请参阅此MSDN article。你的风格设置者在#8以下,而用户设置在#3。

0

你试过了吗?

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

但在现实中,你应该设置在控件的样式上下文菜单,然后控制的任何用户都可以在派生的风格还是在控制属性将其覆盖。

+0

我试图做到这一点。看到这个问题:[链接](http://stackoverflow.com/questions/5294094/how-to-override-contextmenu-in-global-style-wpf) – 2011-03-14 08:29:34

+0

对不起,能否详细说明一下。在这个例子中,你链接到的问题是关于基础风格的风格。这是为你工作吗?在这个问题中,我认为它更像是一个风格触发器的问题。我赞赏最后的投票,但我想知道解决方案是有用的。 – jjrdk 2011-03-14 09:31:46

+0

此解决方案生成StackOverflow异常。 – 2011-03-15 02:58:40

相关问题