【问题标题】:How To Find Name Property Of Parent Element When ContextMenu MenuItem Is Clicked单击 ContextMenu MenuItem 时如何查找父元素的名称属性
【发布时间】:2012-02-23 20:05:59
【问题描述】:

我有以下代码,它创建一个带有 ContextMenu 的新按钮,其中包含一个名为“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
}

【问题讨论】:

    标签: c# .net wpf contextmenu menuitem


    【解决方案1】:

    将数据存储为<Button Tag=""/>,并将标签检索为(sender as Button).Tag

    【讨论】:

    • 与接受的答案和随后的 cmets 几乎相同。
    【解决方案2】:

    您也可以直接访问父母:

    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;
    }
    

    【讨论】:

      【解决方案3】:

      使用 (MenuItem)sender 访问您的菜单项

      【讨论】:

        【解决方案4】:

        您可以在创建时将该信息存储在item.Tag 中,然后在处理程序中您只需将sender 转换为MenuItem 并再次检索它。

        【讨论】:

        • 使用标签存储MenuItem.Parent中已有的信息并不是一个好的解决方案
        • @Beatles1692:问题是如何“找出包含此 ContextMenu MenuItem 的 Button 的 Name 属性”,您将 i>MenuItem.Parent 得到这个。
        • @Beatles1692:菜单层次结构中的一点点变化,你的代码就会爆炸,真的好主意......
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-05-20
        • 1970-01-01
        • 2021-10-06
        • 1970-01-01
        • 2020-01-30
        • 1970-01-01
        • 2021-12-30
        相关资源
        最近更新 更多