【发布时间】:2014-09-08 13:12:35
【问题描述】:
我是 WPF 新手。我想在画布中有几个不同的形状,然后根据用户右键单击的形状显示不同的上下文菜单。我目前只尝试一个形状,画布内的矩形。我想到的是,在右键单击处理程序中,我应该对矩形进行命中测试。如果返回为真,我将显示此形状的上下文菜单。但它不起作用。如何检测到右键单击是在矩形内部而不是画布上的其他位置?
XAML:
<Canvas Grid.Column ="2" Name="canvas" Background="Transparent" RightButtonDown="show_context_menu" >
<Rectangle Name="myrectangle" Width="1000" Height="500" Fill="LightSteelBlue" Stroke="Black" StrokeThickness="4" Canvas.Left="10" Canvas.Top="100"/>
</Canvas>
C#:
private void show_context_menu(object sender, MouseButtonEventArgs e)
{
Point pt = e.GetPosition((UIElement)sender);
HitTestResult result = VisualTreeHelper.HitTest(myrectangle, pt);
if (result != null)
{
ContextMenu cm = cmCanvas as ContextMenu;
cm.PlacementTarget = sender as Canvas;
cm.IsOpen = true;
}
}
【问题讨论】:
标签: wpf