Реализация UWP Ctrl + F

Я создаю приложение UWP (C # .NET), где есть текстовое поле. Я хочу реализовать ярлык (Ctrl + F) для поиска текстов в текстовом поле. Я знаю, как искать тексты, но не знаю, как реализовать ярлык.

Я нашел это:

if ((e.Control && e.KeyCode == Keys.F) || (e.Control && e.KeyCode == Keys.S)) 
{
    //do something
}

... но это не работает для UWP. Я пробовал это (текстовое поле - это имя текстового поля):

private void textarea_KeyDown(object sender, KeyRoutedEventArgs e)
{
    if ((e.Key == Windows.System.VirtualKey.Control) && (e.Key == Windows.System.VirtualKey.F))
    {
        flayoutFind.ShowAt(appBarButtonFind as FrameworkElement);
    }
}

но это тоже не работает. Как мне это сделать?

И на будущее, есть ли способ переопределить функциональность по умолчанию и ярлык текстового поля Ctrl + Z (отменить)?


person Banana Cake    schedule 17.07.2017    source источник
comment
Основываясь на этом ответе, вы можете попробовать использовать Window.Current.CoreWindow.GetKeyState(VirtualKey.Control).   -  person Keyur PATEL    schedule 17.07.2017


Ответы (1)


Вы должны использовать «ускорители» и «ключи доступа», как описано здесь: https://docs.microsoft.com/en-us/windows/uwp/input-and-devices/keyboard-interactions

В основном вам нужно будет зарегистрироваться для участия в мероприятиях.

Window.Current.CoreWindow.Dispatcher.AcceleratorKeyActivated += Dispatcher_AcceleratorKeyActivated;

private void Dispatcher_AcceleratorKeyActivated(CoreDispatcher sender, AcceleratorKeyEventArgs args)
    {
         //Implementation
    }

Вы можете подробно проверить образец здесь: https://github.com/Microsoft/DesktopBridgeToUWP-Samples/blob/master/Samples/SQLServer/BuildDemo/MainPage.xaml.cs

person saurabh    schedule 17.07.2017