我有以下代码,它创建一个带有ContextMenu的新Button,其中有一个名为“Remove”的MenuItem。
我的问题是...在removeItem_Click EventHandler中,如何查找包含此ContextMenu MenuItem的Button的Name属性?
private Button CreateRdpConnectionButton(string content, string name)
{
var newButton = new Button();
newButton.Content = content;
newButton.Name = name;
newButton.HorizontalContentAlignment = System.Windows.HorizontalAlignment.Left;
ContextMenu menu = new ContextMenu();
MenuItem item = new MenuItem();
item.Header = "Remove";
item.Click += removeItem_Click;
menu.Items.Add(item);
newButton.ContextMenu = menu;
}
void removeItem_Click(object sender, RoutedEventArgs e)
{
// TODO: Find name of Button that contained this item
}
答案 0 :(得分:3)
您也可以直接访问父母:
void removeItem_Click(object sender, RoutedEventArgs e)
{
// Find name of Button that contained this item
MenuItem menuItem = (MenuItem)sender;
ContextMenu contextMenu = (ContextMenu)menuItem.Parent;
Button button = (Button)contextMenu.PlacementTarget;
string buttonName = button.Name;
}
答案 1 :(得分:0)
您可以在创建该信息时将该信息存储在item.Tag
中,然后在处理程序中,您可以将sender
转换为MenuItem
并再次检索它。
答案 2 :(得分:0)
使用(MenuItem)发件人访问您的菜单项
答案 3 :(得分:0)
将数据存储为<Button Tag=""/>
并将标记检索为(sender as Button).Tag