Континуум для применения UWP

У меня есть несколько вопросов о Континууме по применению UWP.

  1. Как я могу узнать, что Continuum подключается к моему Windows Phone? Теперь я проверяю это DeviceType.Mobile а также UserInteractionMode Мышь.

  2. Как сделать щелчок правой кнопкой мыши в Continuum для показа всплывающего окна? Например, я видел это в приложении Microsoft.

1 ответ

Решение

Предположим, что вы используете элемент управления TextBox, по умолчанию, если вы используете элемент управления TextBox на рабочем столе, он покажет нам ContextMenu и вызовет событие ContextMenuOpening, когда мы щелкнем правой кнопкой мыши TextBox, но если мы используем элемент управления TextBox в Мобильный, когда мы щелкнем правой кнопкой мыши TextBox, ContextMenu не будет отображаться, и событие ContextMenuOpening также не сработает. Потому что ContextMenu, как "Вставить", будет отображаться на экранной клавиатуре.

Если вы хотите показать ContextMenu при использовании Continuum, у вас есть два обходных пути. Одним из обходных путей является нажатие клавиши "Shift+F10" на физической клавиатуре, после чего должно отобразиться ContextMenu и должно быть запущено событие ContextMenuOpening. Другим обходным решением является обработка события DoubleTapped объекта TextBox и отображение нового всплывающего окна внутри события следующим образом:

В MainPage.xaml:

<TextBox Height="50" DoubleTapped="TextBox_DoubleTapped">
      <FlyoutBase.AttachedFlyout>
          <MenuFlyout>
              <MenuFlyoutItem x:Name="EditButton" Text="Some Command" />
              <MenuFlyoutItem x:Name="DeleteButton" Text="Some Command" />
          </MenuFlyout>
     </FlyoutBase.AttachedFlyout>
</TextBox>

В MainPage.xaml.cs:

private void TextBox_DoubleTapped(object sender, DoubleTappedRoutedEventArgs e)
    {
        FrameworkElement senderElement = sender as FrameworkElement;
        FlyoutBase flyoutBase = FlyoutBase.GetAttachedFlyout(senderElement);
        flyoutBase.ShowAt(senderElement);
    }
Другие вопросы по тегам