Вот быстрый и грязный пример, предназначенный для того, чтобы дать представление о том, как обычно реализованы сочетания клавиш.
Очевидно.
Это очень упрощено, и моя команда мало что делает.
Вы можете ввести D в любое текстовое поле, без проблем.
Разметка в главном окне.
<Window.DataContext>
<local:MainWindowViewModel/>
</Window.DataContext>
<Window.InputBindings>
<KeyBinding Key="D"
Modifiers="Alt"
Command="{Binding MyDcommand}" />
</Window.InputBindings>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Ribbon>
<RibbonGroup>
<TextBox Text="Hello"/>
</RibbonGroup>
</Ribbon>
<TextBox Height="30"
Width="100"
Grid.Row="1"/>
</Grid>
Я использую mvvmlight в модели представления, поэтому легко определить icommands.
using GalaSoft.MvvmLight.CommandWpf;
namespace wpf_99
{
public class MainWindowViewModel : BaseViewModel
{
private RelayCommand myDcommand;
public RelayCommand MyDcommand
{
get
{
return myDcommand
?? (myDcommand = new RelayCommand(
() =>
{
Console.WriteLine("It worked OK");
}
));
}
}
Когда я нажимаю Alt + D, команда запускает, находится ли текстовое поле в фокусе или нет.
Команда имеет область видимости для окна, а не только для ленты.Так что это работает, если фокус находится где-нибудь в окне.
И я могу набрать D