如何在触发器中设置属性,如果为空?如何在触发器中设置属性,如果为空?
<Style.Triggers>
<Trigger Property="ContextMenu" Value="{x:Null}">
<Setter Property="ContextMenu" Value="{DynamicResource ContextMenu}"/>
</Trigger>
</Style.Triggers>
如何在触发器中设置属性,如果为空?如何在触发器中设置属性,如果为空?
<Style.Triggers>
<Trigger Property="ContextMenu" Value="{x:Null}">
<Setter Property="ContextMenu" Value="{DynamicResource ContextMenu}"/>
</Trigger>
</Style.Triggers>
你可以简单地直接设置文本菜单中你的风格像这样:
<Style ...>
<Setter Property="ContextMenu" Value="{DynamicResource ContextMenu}"/>
</Style>
如果用户设置的ContextMenu明确,那么将优先于样式的制定者。有关顺序或优先顺序,请参阅此MSDN article。你的风格设置者在#8以下,而用户设置在#3。
你试过了吗?
<Style.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=Self}, Path=ContextMenu}" Value="{x:Null}">
<Setter Property="ContextMenu" Value="{DynamicResource ContextMenu}"/>
</DataTrigger>
</Style.Triggers>
但在现实中,你应该设置在控件的样式上下文菜单,然后控制的任何用户都可以在派生的风格还是在控制属性将其覆盖。
我试图做到这一点。看到这个问题:[链接](http://stackoverflow.com/questions/5294094/how-to-override-contextmenu-in-global-style-wpf) – 2011-03-14 08:29:34
对不起,能否详细说明一下。在这个例子中,你链接到的问题是关于基础风格的风格。这是为你工作吗?在这个问题中,我认为它更像是一个风格触发器的问题。我赞赏最后的投票,但我想知道解决方案是有用的。 – jjrdk 2011-03-14 09:31:46
此解决方案生成StackOverflow异常。 – 2011-03-15 02:58:40
你是否试图设置ContextMenu,只有当用户没有设置它时? – CodeNaked 2011-03-17 01:49:44
是的,我试图设置ContextMenu,只有当用户没有设置。 – 2011-03-17 12:37:41