【发布时间】:2014-07-14 10:37:41
【问题描述】:
我有一个按钮,这个按钮有一个上下文菜单。左键单击按钮时,我使用按钮单击触发器将 ContextMenu.IsOpen 属性设置为 true。 我的问题如下 - 只要我不右键单击按钮,上下文菜单就不会继承我在窗口资源中定义的样式。 我搜索了它,发现上下文菜单的样式仅在右键单击它后才初始化。 即使我不右键单击它,如何强制样式初始化? (我无法硬编码设置上下文菜单的样式,因为我希望它在更改主题时自动且轻松地更改,而无需单独维护我在代码中拥有的每个上下文菜单)。 谢谢!
XAML:
`
<Window.Resources>
<Style TargetType="ContextMenu">
<Setter Property="Background" Value="Green"/>
</Style>
</Window.Resources>
<Grid>
<Button Content="Click Me!" Width="80" Height="50">
<Button.Style>
<Style TargetType="Button">
<Style.Triggers>
<EventTrigger RoutedEvent="Click">
<EventTrigger.Actions>
<BeginStoryboard>
<Storyboard>
<BooleanAnimationUsingKeyFrames Storyboard.TargetProperty="ContextMenu.IsOpen">
<DiscreteBooleanKeyFrame KeyTime="0:0:0" Value="True"/>
</BooleanAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
</Style.Triggers>
</Style>
</Button.Style>
<Button.ContextMenu>
<ContextMenu>
<MenuItem>
<MenuItem.Header>
<CheckBox Content="Include First Option"/>
</MenuItem.Header>
</MenuItem>
<MenuItem>
<MenuItem.Header>
<CheckBox Content="Include Second Option"/>
</MenuItem.Header>
</MenuItem>
</ContextMenu>
</Button.ContextMenu>
</Button>
</Grid>
'
【问题讨论】:
标签: wpf styles contextmenu