У меня есть набор узлов, и я создаю изображение для представления каждого из них в форме WPF.Получите доступ к родительскому элементу при нажатии ContextMenu 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;
}
Мой делегат создает ContextMenu для каждого изображения, помещенного в форму.
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;
}
А затем передать для моего подменю Click события
void submenu_Click(object sender, RoutedEventArgs e)
{
}
Как я могу получить доступ ко мое изображение при нажатии на этом контекстное меню?
Sender возвращает тип MENUITEM
var item1 = sender;
Это возвращает тип MainWindow
var item2 = this;
Parent возвращает тип ContextMenu
var item3 = item1.Parent;
'menu.DataContext = ((Image) sender);' вместо 'menu.DataContext = this;' – user2847238
Спасибо за обновление ... так, это исправить вашу проблему? – Sheridan
Мне пришлось добавить еще одну строку 'var item1 = ((MenuItem) отправитель) .DataContext;' 'Image item2 = ((Image) item1);' – user2847238