Комбинации клавиш без какого-либо фокуса - PullRequest
4 голосов
/ 15 ноября 2011

У меня есть экран WPF с полдюжины кнопок. Я хотел бы связать каждого с привязкой клавиш. Все они управляются ICommand через MVVM.

В настоящее время у меня есть привязки клавиш, связанные с событиями, а не реальные кнопки:

<UserControl.InputBindings>
        <KeyBinding Key="N"  Command="{Binding MyCommand}"/>

Однако, чтобы любая связка клавиш работала, я должен установить хотя бы одну кнопку, чтобы сосредоточиться в коде позади. Я бы очень не хотел этого делать, потому что каждая кнопка / команда имеет разные правила, если она активна или нет, и у меня есть анимация фокуса, которую я предпочел бы, чтобы она не была активной при загрузке страницы.

Возможно ли это или мне нужно установить фокус?

Ответы [ 3 ]

13 голосов
/ 15 ноября 2011

Вам просто нужно установить фокусировку usercontrol на true, потому что у некоторых элементов по умолчанию нет значения true

<UserControl Focusable="True">

Затем вы должны установить this.Focus () в загруженном событии пользовательского элемента управления

1 голос
/ 15 ноября 2011

Размещаете ли вы свой UserControl в окне .... это тот случай, когда вы можете использовать ....

<Window x:Class="GM.Powertrain.DOEMenu.ViewLayer.AboutScreen"
Height="460" Width="370" 
WindowStartupLocation="CenterScreen"
ShowInTaskbar="False"
HorizontalAlignment="Center" 
VerticalAlignment="Center"
ResizeMode="NoResize"      
FocusManager.FocusedElement="{Binding ElementName=UserControlName}" 
                   Behaviors:WindowCloseOnEscapePressBehavior.EscapeClosesWindow="True" Behaviors:Help.Filename="Help/DOEMenuHelp.chm" Behaviors:Help.Keyword="About Screen">
<UserControl Name=UserControlName>
   <KeyBinding Key="N"  Command="{Binding MyCommand}"/>
</UserControl>
</Window>

Ваше связывание клавиш должно работать таким образом ...

1 голос
/ 15 ноября 2011

Возможно, вам нужно сосредоточиться на каком-то элементе, чтобы заставить его работать, но, возможно, вы могли бы просто установить фокус на весь свой UserControl без визуальной обратной связи?Вы также можете попробовать установить фокус на невидимый элемент, если это не сработает.

Кстати, здесь, похоже, уже был похожий вопрос: Связывание ключей MVFM WPF не распознается сразувсегда работает

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...