【问题标题】:MenuItem doesn't fire the MouseRightButtonDown eventMenuItem 不会触发 MouseRightButtonDown 事件
【发布时间】:2011-06-16 11:59:15
【问题描述】:

不多说,直接进入事件处理器即可。

XAML:

 <Grid>
    <Menu IsMainMenu="True" x:Name="x">
        <MenuItem Header="_File" />
        <MenuItem Header="_Edit" />
        <MenuItem Header="_View" />
        <MenuItem Header="_Window" />
        <MenuItem Header="_Help" />
    </Menu>
</Grid>

后面的代码:

 public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        foreach (var item in x.Items)
        {
            ((MenuItem)item).MouseRightButtonDown += MainWindow_MouseRightButtonDown;
        }
    }

    void MainWindow_MouseRightButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
    {
        // Can't get here
    }

}

p.s - MouseRightButtonUp、MouseLeftButtonDown 和 MouseLeftButtonUp 也是如此。

【问题讨论】:

    标签: c# .net wpf events xaml


    【解决方案1】:

    那是因为MenuItem 处理事件并且不让它传播。你有什么特别需要做的吗?不告诉我们就很难给出建议。您是否考虑过改用PreviewMouseRightButtonDown 事件?

    【讨论】:

      【解决方案2】:

      我认为您需要了解MouseDownevent 与其他鼠标事件之间的关系,例如MouseLeftButtonDownMouseRightButtonDown。请阅读UIElement.MouseLeftButtonDown Event的备注部分。

      这里提出了两种可能的解决方案。其中之一如下代码。

      public partial class MainWindow : Window
      {
          public MainWindow()
          {
              InitializeComponent();
              foreach (var item in x.Items)
              {
                  var menuItem = ((MenuItem)item);
                  //menuItem.MouseRightButtonDown += MainWindow_MouseRightButtonDown;
                  menuItem.AddHandler(UIElement.MouseRightButtonDownEvent, new RoutedEventHandler(MainWindow_MouseRightButtonDown), true);
              }
          }
      
          void MainWindow_MouseRightButtonDown(object sender, RoutedEventArgs e)
          {
              Debug.WriteLine("Handled:{0}\r\nOriginalSource: {1}\r\nSource:{2}\r\nRoutedEvent:{3}", 
                          e.Handled, e.OriginalSource, e.Source, e.RoutedEvent);
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-18
        • 1970-01-01
        相关资源
        最近更新 更多