在单击上下文菜单 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;
尝试将ContextMenu
的DataContext
设置为有权访问Image
的对象:
ContextMenu menu = new ContextMenu();
menu.DataContext = this;
或:
ContextMenu menu = new ContextMenu();
menu.DataContext = this.DataContext;
我只是在这里猜测,但您应该能够处理哪个对象可以访问Image
控件。