访问菜单项(WPF)

本文关键字:WPF 菜单项 访问 | 更新日期: 2023-09-27 18:12:50

我使用以下代码来处理菜单项上的单击:

 private void MenuItem_Click(object sender, RoutedEventArgs e)
 {
     MenuItem mi = (MenuItem)sender;
     switch (mi.Name)
     {
         case "MenuItem1":
         .
         .
         ///How to disable MenuItem2 from here?
         break;
         case "MenuItem2":
         .
         .
         break;
     }
  }

虽然我可以访问已单击的菜单项,但我如何访问未单击的另一个菜单项?

访问菜单项(WPF)

您不应该在name属性上使用开关,而是为每个项创建一个事件处理程序。此外,如果MenuItem是"静态的",你应该已经有了对它的引用,所以你应该能够通过MenuItem2.LoremIpsum使用它。如果它不是静态的,您可以在Tag(例如:Tag="{x:Reference MenuItem2}")中添加对MenuItem1的引用,然后您可以转换mi.Tag并从那里使用它。当然,还有其他获取引用的方法,如FindName或其他遍历视觉或逻辑树的递归搜索方法。

除了切换名称之外,我怀疑从一个菜单项访问另一个菜单项是一个好主意,事情会变得混乱。

使用VisualTreeHelper在树的上一级进入你的菜单-从那里你可以访问你喜欢的