我在 WPF(.NET 4.0)中我的一个控件的工具栏上的一个按钮上附加了一个上下文菜单。在定义上下文菜单的 XAML 中,上下文菜单具有分配给它的样式。如果按钮尚未打开,左键单击按钮会打开按钮的上下文菜单。
这是相关的 XAML:
<Button x:Name="fileButton" Foreground="White" Margin="7, 0, -3, 0" VerticalAlignment="Stretch" MaxHeight="70" MaxWidth="78" MinHeight="55" MinWidth="62" Style="{DynamicResource ImageButton}" utils:WpfImageUtil.Image="{StaticResource fileButton}" Template="{DynamicResource GlassButton}" Content="File" Visibility="Visible" Click="fileButton_Click">
<Button.ContextMenu>
<ContextMenu Style="{DynamicResource ContextMenuStyle}">
<MenuItem x:Name="saveMenuItem" Header="Save" Click="saveMenuItem_Click" Style="{DynamicResource MenuItemStyle}" />
<MenuItem x:Name="saveDrawingMenuItem" Header="Save Drawing" Click="saveMenuItem_Click" Style="{DynamicResource MenuItemStyle}" />
<MenuItem x:Name="openMenuItem" Header="Open" Style="{DynamicResource MenuItemStyle}">
<MenuItem x:Name="openFromFile" Header="From File" Style="{DynamicResource MenuItemStyle}" />
<MenuItem x:Name="openFromDesktop" Header="From Desktop" Style="{DynamicResource MenuItemStyle}" />
</MenuItem>
<MenuItem x:Name="iconsMenuItem" Header="Icons" ItemsSource="{Binding}" Style="{DynamicResource MenuItemStyle}"/>
<MenuItem x:Name="prefsMenuItem" Header="Preferences" Style="{DynamicResource MenuItemStyle}"/>
</ContextMenu>
</Button.ContextMenu>
</Button>
ContextMenuStyle
在正确引用的资源字典中定义。
当鼠标左键打开上下文菜单时,我定义的样式并没有应用到菜单上,如下图:
但是,如果用户右键单击并以传统方式打开上下文菜单,则会按预期应用样式:
之后,左键单击按钮将正确显示样式:
我一直试图弄清楚这一点,但一直无法想出发生此问题的任何原因。这对我来说似乎是某种错误,但我并不完全确定。我也不知道右键单击控件会导致正确应用样式时在较低级别会发生什么。