none
[WPF]MenuItem添加Items如何保持自己的Click事件能够激活? RRS feed

  • 问题

  • WPF中的MenuItem如果不存在Items,那么它的Click事件是可以直接通过鼠标单击激活的,但是如果添加了Items,只有通过其子项的Click事件经过冒泡传到该MenuItem才会激活Click事件。不过,我现在有一个需求,需要让其在拥有Items的同时也能够通过单击鼠标激活其的Click事件。

    我的尝试:

    经过调试,发现鼠标点击后根本没有进入MenuItem的OnClick方法,这个完全不知道是为什么!

    自己也重写了Click事件,跟上一条一样,由于不能进入OnClick方法,那么也就无法激活Click事件。

    以下是我的一部分代码:

    public partial class FunctionMenuItem : MenuItem { private static readonly Type _ownerType = typeof(FunctionMenuItem); public new static readonly RoutedEvent ClickEvent = EventManager.RegisterRoutedEvent("Click", RoutingStrategy.Bubble, typeof(RoutedEventHandler), _ownerType); public new event RoutedEventHandler Click { add { this.AddHandler(ClickEvent, value); } remove { this.RemoveHandler(ClickEvent, value); } } protected override void OnClick() { var newEvent = new RoutedEventArgs(ClickEvent, this); RaiseEvent(newEvent); } }

    <control:FunctionMenuItem Click="FuncMenuItem_Click"> 
            <control:FunctionMenuItem.Header>
                   我是标题
             </control:FunctionMenuItem.Header>
             <control:FunctionMenuItem.Items>
                      <control:MachineMenuItem Header="111" />
              </control:FunctionMenuItem.Items>
    </control:FunctionMenuItem>


    2018年1月3日 6:51

答案

全部回复