c# - 获取上下文菜单的控制权

标签 c# .net wpf contextmenu

我有一个看起来像这样的上下文菜单

 A
 |--1
 |--2
 |--3

在选择 1 2 或 3 之后,我需要访问调用上下文菜单的对象

意味着如果这是文本框的上下文菜单1,那么我需要访问该对象,我该怎么做?

忘了说,这是一个 WPF 应用程序。所以我使用 System.Windows.Controls 并且 ContextMenu 是以编程方式创建的

最佳答案

你可以走上树并从 ContextMenu.PlacementTarget 获取控制权,例如

private void MenuItem_Click(object sender, RoutedEventArgs e)
{
    var item = sender as MenuItem;
    while (item.Parent is MenuItem)
    {
        item = (MenuItem)item.Parent;
    }
    var menu = item.Parent as ContextMenu;
    if (menu != null)
    {
        var droidsYouAreLookingFor = menu.PlacementTarget as TextBox;
        //...
    }
}

关于c# - 获取上下文菜单的控制权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6720366/

相关文章:

c# - 在 Visual Studio 中创建的 JSON 文件开头的 "EF BB BF"

c# - 匿名类的通用列表

.net - 在编译期间强制使用特定的 .net 版本

wpf - 当输入错误时如何显示MessageBox,以及如何在WPF中使用MVVM还原TextBox的旧值

c# - WPF MVVM-DataGrid单元格单击,获取列标题

c# - 在某些条件下序列化时忽略属性

c# - 为什么我的反序列化对象为空?

c# - 处理并发文件写入

c# - 如何取消正在进行的 XslTransform.Transform

c# - 我如何在 Glyphs 中实现字符连字?