在WPF中若使用多个控件,并给这些控件添加同一个ContextMenu,那么如何获取ContextMenu的鼠标点击源?

WPF的ContextMenu并没有Winform的ContextMenu的SourceControl这一属性,但我们也可以通过另一种方法实现同样的功能。

在ContextMenu的MenuItem的点击事件中使用ContextMenu.PlacementTarget

1
2
3
4
5
public void MenuItem_Click(object sender, RoutedEventArgs e)
{
ContextMenuService.GetPlacementTarget(
LogicalTreeHelper.GetParent(sender as MenuItem));
}