获取上下文菜单的控制权

Bg1*_*987 3 .net c# wpf contextmenu

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

 A
 |--1
 |--2
 |--3
Run Code Online (Sandbox Code Playgroud)

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

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

忘了提一下,这是一个WPF应用程序.所以我使用System.Windows.Controls和ContextMenu是以编程方式创建的

H.B*_*.B. 8

你可以走上树,从中获取控制权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;
        //...
    }
}
Run Code Online (Sandbox Code Playgroud)


小智 0

使用

ContextMenu.SourceControl
Run Code Online (Sandbox Code Playgroud)

这是调用上下文菜单的变量。你需要做的就是控制