WPF样式EventSetter单击事件错误

时间:2015-08-24 14:47:25

标签: wpf visual-studio xaml visual-studio-2015

我正在尝试为我在代码中动态分配给扩展器的上下文菜单创建样式资源。我希望在样式的上下文菜单中为菜单项设置一个单击事件监听器,但是我收到的错误是我无法找到解决方案。

错误

  • 活动'点击'无法在Style中的Target标记上指定。使用 而是一个EventSetter。
  • 属性' Handler'的值无效: ' Microsoft.VisualStudio.DesignTools.Xaml.LanguageService.Semantics.XmlValue'

    <Style x:Key="LincrosContextMenu"
           TargetType="{x:Type ContextMenu}"
           BasedOn="{StaticResource MetroContextMenu}">
        <Style.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 TargetType="{x:Type Separator}">
                <Setter Property="Margin" Value="6, 0, 0, 0" />
            </Style>
        </Style.Resources>
    </Style>
    
    <ContextMenu x:Key="ProjectFolderContext" Style="{StaticResource ResourceKey=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>
    

我已尝试过这个解决方案,但遗憾的是它对我没有任何影响。

参考:WPF ListView SelectionChanged inside style does not work. EventSetter either

1 个答案:

答案 0 :(得分:0)

由于我无法编辑自己的问题,因此根据&#34; d.moncada&#34; 的接受答案,这是我的最终解决方案。

    <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>

快乐的编码。 :)