WPF определяет последовательность клавиш - PullRequest
0 голосов
/ 09 января 2019

Я хотел бы скрыть групповую оспу в своем приложении WPF и включить ее вручную, когда мне это нужно, с помощью кода нажатия клавиши, когда приложение активно (не свернуто)

этот пример иногда работает только одним нажатием клавиши, но мне нужна последовательность

protected override void OnPreviewKeyDown(KeyEventArgs e)
    {
        base.OnPreviewKeyDown(e);
        if (e.Key == Key.B)
        {
            bdgb.Visibility = Visibility.Visible;
        }
    }

Ответы [ 2 ]

0 голосов
/ 09 января 2019

На что вы поставили обработчик? Только фокусированный элемент получает уведомление, и если он не обрабатывается, он поднимается вверх по дереву.

Вам нужно поместить его в самый верхний элемент UIElement, что означает ваше окно.

Или, вы можете сделать это в более простом стиле MVVMy WPF, создав привязку команды к ключу и имея свойство на вашей виртуальной машине GroupBoxVisible, установив для него значение "True" и связав его с GroupBox.Visibillity.

Более подробная информация здесь

0 голосов
/ 09 января 2019

Например, вы можете переопределить метод OnPreviewKeyDown вашего окна, например ::10000

protected override void OnPreviewKeyDown(KeyEventArgs e)
{
    base.OnPreviewKeyDown(e);
    if (e.Key == Key.B)
    {
        //...
    }
}
...