Как найти свойство Name родительского элемента при щелчке по контекстному меню MenuItem - PullRequest
1 голос
/ 01 февраля 2012

У меня есть следующий код, который создает новую кнопку с помощью ContextMenu с одним элементом MenuItem под названием «Удалить».

Мой вопрос ... в RemoveItem_Click EventHandler, как мне узнать свойство Name кнопки, которая содержала этот ContextMenu MenuItem?

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 ]

3 голосов
/ 18 февраля 2012

Вы также можете напрямую связаться с родителями:

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;
}
0 голосов
/ 07 февраля 2014

Сохранить данные как <Button Tag=""/> и извлечь тег как (sender as Button).Tag

0 голосов
/ 01 февраля 2012

Используйте (MenuItem) отправителя для доступа к вашему пункту меню

0 голосов
/ 01 февраля 2012

Вы можете сохранить эту информацию в item.Tag при ее создании, затем в обработчике вы можете просто привести senderMenuItem) и получить ее снова.

...