【发布时间】:2012-04-20 11:11:06
【问题描述】:
我想使用trigger 自动隐藏已禁用的MenuItem。如果我在一个特定的MenuItem 中使用我的风格,它会起作用 -
<MenuItem
Command="{Binding RelativeSource={RelativeSource FindAncestor,
AncestorType={x:Type ContextMenu}},
Path=PlacementTarget.DataContext.ExportCommand}"
Header="Export...">
<MenuItem.Style>
<Style TargetType="{x:Type MenuItem}">
<Style.Triggers>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Visibility" Value="Collapsed" />
</Trigger>
</Style.Triggers>
</Style>
</MenuItem.Style>
</MenuItem>
但是如果我像这样将相同的style 放在ResourceDictionary 中,那么它就行不通了-
<Style x:Key="{x:Type MenuItem}" TargetType="{x:Type MenuItem}" >
<Style.Triggers>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Visibility" Value="Collapsed" />
</Trigger>
</Style.Triggers>
</Style>
我希望我的所有菜单项都有这种行为,我不想在我的ContextMenu 中的每个MenuItem 上都使用这种样式。知道为什么它不起作用吗?
【问题讨论】:
-
如果您将样式放入 ContextMenu.Resources,它是否适用于 MenuItems 内部?
标签: .net wpf triggers menuitem resourcedictionary