Вы можете поместить в ContextMenu
все, что захотите, а не только MenuItems
.Я никогда не думал об этом, но, думаю, вы могли бы использовать его как Popup
, когда кто-то щелкнет по нему правой кнопкой мыши.Вы также можете добавлять события и т. Д.
<StackPanel>
<StackPanel.Resources>
<ContextMenu x:Key="myContextMenu">
<StackPanel>
<TextBox Text="Some Text.."/>
<DatePicker/>
<Button Content="Click Me" Click="Button_Click"/>
</StackPanel>
</ContextMenu>
</StackPanel.Resources>
<TextBox Text="Display some controls on right click"
ContextMenu="{StaticResource myContextMenu}"/>
<TextBox Text="Display some controls on right click"
ContextMenu="{StaticResource myContextMenu}"/>
</StackPanel>
Получить нажатие UIElement
в обработчике событий
private void Button_Click(object sender, RoutedEventArgs e)
{
Button button = sender as Button;
StackPanel stackPanel = button.Parent as StackPanel;
ContextMenu contextMenu = stackPanel.Parent as ContextMenu;
UIElement elementWithMenu = contextMenu.PlacementTarget;
}