在单击上下文菜单 WPF 时获取对父级的访问

本文关键字:访问 获取 单击 上下文 菜单 WPF | 更新日期: 2023-09-27 18:37:09

我有一组节点,我创建图像来表示WPF表单上的每一个节点。

        BitmapImage src = new BitmapImage();
        src.BeginInit();
        src.UriSource = new Uri("pack://application:,,,/WpfApplication1;component/Resources/Node.png", UriKind.Absolute);
        src.CacheOption = BitmapCacheOption.OnLoad;
        src.EndInit();
        foreach (var item in nodeList)
        {
            Image newImage = new Image();
            newImage.Margin = new Thickness(item.Position.X , item.Position.Y , 0, 0);
            newImage.Source = src;
            Canvas1.Children.Add(newImage);
            newImage.MouseRightButtonDown += newImage_MouseRightButtonDown;
        }

我的委托为放置在表单上的每个图像创建上下文菜单。

    void newImage_MouseRightButtonDown(object sender, MouseButtonEventArgs e)
    {
        ContextMenu menu = new ContextMenu();
        int index = Canvas1.Children.IndexOf((Image)sender);
        MenuItem addExistingLink = new MenuItem();
        addExistingLink.Header = "Add Existing Link";
        addExistingLink.Click += submenu_Click;
        MenuItem addNewLink = new MenuItem();
        addNewLink.Header = "Add New Link";
        addNewLink.Click += submenu_Click;
        menu.Items.Add(addExistingLink);
        menu.Items.Add(addNewLink);
        menu.IsOpen = true;
    }

然后委托我的子菜单单击事件

    void submenu_Click(object sender, RoutedEventArgs e)
    {
    }

单击此上下文菜单时,如何访问我的图像?

发件人返回菜单项类型

        var item1 = sender;

这将返回主窗口类型

        var item2 = this;

父返回上下文菜单类型

        var item3 = item1.Parent;

在单击上下文菜单 WPF 时获取对父级的访问

尝试将ContextMenuDataContext设置为有权访问Image的对象:

ContextMenu menu = new ContextMenu();
menu.DataContext = this;

或:

ContextMenu menu = new ContextMenu();
menu.DataContext = this.DataContext;

我只是在这里猜测,但您应该能够处理哪个对象可以访问Image控件。