2014-09-24 4 views
0

У меня есть кнопка ленты WPF, и я хочу, чтобы у нее была клавиша быстрого доступа. (например, Ctrl + A). Был поиск в google, но потерян, чтобы получить возможный ответ. Кто-нибудь знает, как я могу справиться с этим? Спасибо =)Назначить ярлык в кнопке ленты WPF

Вот то, что я до сих пор

<my:RibbonButton Name="rb1" Content="Images/save.png" /> 
<my:RibbonButton Name="rb2" Content="Images/abort.png" /> 

ответ

1

вы можете, возможно, использовать UIElement.InputBindings с KeyBinding

например

<Window.InputBindings> 
    <KeyBinding Key="S" 
       Modifiers="Control" 
       Command="{Binding Save}" /> 
    <KeyBinding Key="A" 
       Modifiers="Control" 
       Command="{Binding Abort}" /> 
</Window.InputBindings> 

, используя этот подход, вы можете связать вход жесты к командам, кнопки которых используются

предполагается код

<my:RibbonButton Name="rb1" Content="Images/save.png" Command="{Binding Save}" /> 
<my:RibbonButton Name="rb2" Content="Images/abort.png" Command="{Binding Abort}" /> 

от MSDN: KeyBinding

сочетание клавиш связывает KeyGesture с ICommand, такой как RoutedCommand. RoutedCommand - это основная реализация интерфейса ICommand для системы управления WPF. В общем случае, когда KeyGesture выполняется, команда вызывается, хотя на поведение команды влияют также специфические для команды факторы, такие как значение CanExecute.

+0

Спасибо. Но его не работает = ( –

+0

есть ли какая-либо ошибка?), Особенно ошибка привязки данных. У вас есть команды на месте? – pushpraj

+0

Нет ошибок. Просто ничего не происходит, когда я набираю «N» или «Ctrl + N» и также попробовал «Alt + N» .. Yieh Я убеждаюсь, что команды находятся в правильном месте так же, как и то, что вы разместили. –

1

Я предпочитаю делать это в коде позади. Я использую код в своей программе. Надеюсь, что это поможет.

private void AddHotKeys() 
{ 
     try 
     { 
      RoutedCommand firstHotkey = new RoutedCommand(); 
      firstHotkey .InputGestures.Add(new KeyGesture(Key.S, ModifierKeys.Alt)); 
      CommandBindings.Add(new CommandBinding(firstHotkey , Save)); 


     } 
     catch (Exception err) 
     { 
      //handle exception error 
     } 

}

Смежные вопросы