Континуум для применения UWP
У меня есть несколько вопросов о Континууме по применению UWP.
Как я могу узнать, что Continuum подключается к моему Windows Phone? Теперь я проверяю это
DeviceType.Mobile
а такжеUserInteractionMode
Мышь.Как сделать щелчок правой кнопкой мыши в 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);
}