Я работаю над рисованием карты с использованием фигур и добавляю их затем на холст. Я должен показывать ContextMenu, когда MouseRightButtonDown, но при нажатии правой кнопки мыши на холсте происходит смещение, так как я могу остановить это смещение ?!
private void MainCanvas_MouseDown(object sender, MouseButtonEventArgs e)
{
if (e.ChangedButton == MouseButton.Right)
{
Canvas c = sender as Canvas;
ContextMenu contextMenu = c.ContextMenu;
contextMenu.PlacementTarget = c;
contextMenu.IsOpen = true;
e.Handled = true;
}
}
<Canvas x:Name="MainCanvas" Uid="parentCanvas" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" MouseDown="MainCanvas_MouseDown">
<Canvas.ContextMenu >
<ContextMenu>
<MenuItem Name="CzechRepublic"
Header="Czech Republic"/>
<MenuItem Name="MiddleEurope"
Header="Middle Europe"/>
<MenuItem Name="Europe"
Header="Europe"/>
<MenuItem Name="WholeMap"
Header="Whole Map"
Click="WholeMap_Clicked"/>
<Separator />
<MenuItem Name="Settings"
Header="Settings"
Click="Settings_Clicked"/>
</ContextMenu>
</Canvas.ContextMenu>