Вы должны назначить свое меню свойству ContextMenu вашего TextBlock
, чтобы об открытии и позиционировании позаботились за вас. Вам также не нужно создавать меню в каждом MouseDown; просто создайте его один раз и присвойте его свойству ContextMenu
.
В XAML:
<TextBlock
Name="InputtedAddress"
Text="{Binding Path=InputtedAddress}"
>
<TextBlock.ContextMenu>
<ContextMenu>
<MenuItem
Header="Zoom to Incident"
Click="ContextMenu_Click"
/>
</ContextMenu>
</TextBlock.ContextMenu>
</TextBlock>
Если вы хотите показать его вручную, вам нужно расположить его перед показом, установив свойство PlacementTarget , что-то вроде этого:
private void InputtedAddress_MouseDown(object sender, MouseButtonEventArgs e)
{
if (e.RightButton == MouseButtonState.Pressed)
{
thisMenuPlacementTarget = InputtedAddress;
thisMenu.IsOpen = true;
}
}
P.S. «Введено» не слово:)