我正在尝试为上下文菜单创建一个样式资源,我将在代码中动态分配给扩展程序。我希望在样式中为上下文菜单中的菜单项设置一个单击事件侦听器,但我正在接收错误,无法找到解决方案。
错误:
我已经尝试过这个解决方案,但不幸的是,它对我没有任何影响。
参考资料:WPF ListView SelectionChanged inside style does not work. EventSetter either
发布于 2015-08-24 15:12:14
它不能工作的原因是您不能让style内联地使用EventSetter (即在控件的样式内,或者在您的情况下,在另一个样式中)。您可以通过将MenuItem样式放入它自己的Resource来解决这个问题。
见下文:
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<Style TargetType="{x:Type MenuItem}">
<Setter Property="FontSize" Value="12" />
<Setter Property="Padding" Value="0, 3, 0, 3" />
<EventSetter Event="Click" Handler="ContextMenu_MenuItem_Click"/>
</Style>
<Style x:Key="LincrosContextMenu" TargetType="{x:Type ContextMenu}">
<Style.Resources>
<Style TargetType="{x:Type Separator}">
<Setter Property="Margin" Value="6, 0, 0, 0" />
</Style>
</Style.Resources>
</Style>
<ContextMenu x:Key="ProjectFolderContext" Style="{StaticResource LincrosContextMenu}">
<MenuItem Header="Add"/>
<Separator/>
<MenuItem Header="Cut" />
<MenuItem Header="Copy" />
<MenuItem Header="Paste" />
<MenuItem Header="Rename" />
<Separator/>
<MenuItem Header="Open Folder in File Browser" />
<Separator/>
<MenuItem Header="Properties" />
</ContextMenu>
</Window.Resources>
<Button Width="100" Height="75" ContextMenu="{StaticResource ProjectFolderContext}"/>
</Window>发布于 2015-08-24 17:24:20
由于我无法编辑自己的问题,这是基于"d.moncada"的公认答案的最终解决方案。
<Style x:Key="LincrosContextMenuItem" TargetType="{x:Type MenuItem}">
<Setter Property="FontSize" Value="12" />
<Setter Property="Padding" Value="0, 3, 0, 3" />
<EventSetter Event="Click" Handler="ContextMenu_MenuItem_Click"/>
</Style>
<Style x:Key="LincrosContextMenu"
TargetType="{x:Type ContextMenu}"
BasedOn="{StaticResource MetroContextMenu}">
<Style.Resources>
<Style TargetType="{x:Type MenuItem}" BasedOn="{StaticResource LincrosContextMenuItem}" />
<Style TargetType="{x:Type Separator}">
<Setter Property="Margin" Value="6, 0, 0, 0" />
</Style>
</Style.Resources>
</Style>编码愉快。:)
https://stackoverflow.com/questions/32185224
复制相似问题