单击ContextMenu MenuItem时如何查找父元素的名称属性

时间:2012-02-01 04:30:14

标签: c# .net wpf contextmenu menuitem

我有以下代码,它创建一个带有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
}

4 个答案:

答案 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