#c# #win-universal-app #uwp #windows-10
#c# #win-универсальное приложение #uwp #windows-10
Вопрос:
У меня есть код, который вызывает контекстное меню правой кнопкой мыши.
private void GridColections_RightTapped(object sender, RightTappedRoutedEventArgs e)
{
MenuFlyout myFlyout = new MenuFlyout();
MenuFlyoutItem firstItem = new MenuFlyoutItem { Text = "OneIt" };
MenuFlyoutItem secondItem = new MenuFlyoutItem { Text = "TwoIt" };
myFlyout.Items.Add(firstItem);
myFlyout.Items.Add(secondItem);
FrameworkElement senderElement = sender as FrameworkElement;
myFlyout.ShowAt(senderElement);
}
Но меню появляется в центре моего listview. Не в том месте, где я щелкнул мышью. Как это исправить?
Ответ №1:
Если вы хотите, чтобы всплывающее окно отображалось в точке щелчка мыши, и вы можете использовать ShowAt(UIElement,Point)
rather ShowAt(FrameworkElement)
.
Код, который может отображать всплывающее окно в точке щелчка.
private void GridColection_OnRightTapped(object sender, RightTappedRoutedEventArgs e)
{
MenuFlyout myFlyout = new MenuFlyout();
MenuFlyoutItem firstItem = new MenuFlyoutItem { Text = "OneIt" };
MenuFlyoutItem secondItem = new MenuFlyoutItem { Text = "TwoIt" };
myFlyout.Items.Add(firstItem);
myFlyout.Items.Add(secondItem);
//if you only want to show in left or buttom
//myFlyout.Placement = FlyoutPlacementMode.Left;
FrameworkElement senderElement = sender as FrameworkElement;
//the code can show the flyout in your mouse click
myFlyout.ShowAt(sender as UIElement, e.GetPosition(sender as UIElement));
}