Щелкните правой кнопкой мыши меню в ListView UWP

#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));
     }