2010-08-02 3 views
1

Я знаю о «_» вместо «&», но как назначить клавишу F1, F2 ... на кнопку? Это небольшое приложение, я не с помощью команд обработчиков только прямых событий нажмите но я мог бы использовать команды при необходимостиWPF - Назначить F-клавиши кнопкам

ответ

4

В небольшом проекте я работаю сейчас, у меня есть это:

<Window.Resources> 
    <c:CommandReference x:Key="ExitCommandReference" Command="{Binding ExitCommand}" /> 
    <c:CommandReference x:Key="ReloadCommandReference" Command="{Binding ReloadCommand}" /> 
</Window.Resources> 
<Window.InputBindings> 
    <KeyBinding Key="F4" Modifiers="Alt" Command="{StaticResource ExitCommandReference}" /> 
    <KeyBinding Key="F5" Command="{StaticResource ReloadCommandReference}"/> 
</Window.InputBindings> 

А в коде:

private DelegateCommand exitCommand; 
private DelegateCommand reloadCommand; 
public ICommand ExitCommand { get { return exitCommand ?? (exitCommand = new DelegateCommand(Exit)); } } 
public ICommand ReloadCommand { get { return reloadCommand ?? (reloadCommand = new DelegateCommand(Reload)); } } 
private static void Exit() { Application.Current.Shutdown(); } 
private void Reload() { LoadData(); } 
+0

Слишком много кода ИМХО; Я закончил тем, что создал пользовательский кнопочный класс с прикрепленным свойством «Key» и на PreviewKeyUp. Я ищу первую дочернюю кнопку с правильным свойством Key –

6

легко для него ... Примерить .... следовать за мной

в Xaml файле:

<Window.Resources> 
     <RoutedUICommand x:Key="cmd1"></RoutedUICommand> 
    </Window.Resources> 
    <Window.CommandBindings> 
     <CommandBinding Command="{StaticResource cmd1}" Executed="btn_font_Click"> </CommandBinding> 
    </Window.CommandBindings> 
    <Window.InputBindings> 
     <KeyBinding Key="F1" Command="{StaticResource cmd1}"></KeyBinding> 
    </Window.InputBindings> 
    <Button Command="{StaticResource cmd1}" Name="btn_font" Grid.Column="2" Grid.Row="1" Width="60" Height="25" Content="Enter" Click="btn_font_Click" Margin="10,2"/> 

В Cs файл:

private void btn_font_Click(object sender, RoutedEventArgs e) 
    { 
     Font_Chooser fc = new Font_Chooser(); 
     fc.ShowDialog(); 
    } 
+0

. Вы должны ответить на другие вопросы! –

+0

при нажатии кнопки «btn_font_Click» выполняется дважды. чтобы избежать этого, 'btn_font_Click' не должен присутствовать в'

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