Подтвердить что ты не робот

Назначить кнопку короткой резки кнопке в WPF

Как назначить короткий ключ кнопке в WPF?

Googling дал мне ответ, чтобы добавить _ вместо '&' в стандартных Winforms.

Итак, после того, как я сделал следующее:

<Button Name="btnHelp" Content="_Help"></Button> 

Я не нашел подчеркнутого "H".

Это первая проблема.

Вторая проблема заключается в том, как это выполнить после нажатия Alt + H во время выполнения. Скажем, чтобы отобразить окно сообщения достаточно для примера.

Я использую С#, WPF

Спасибо.

4b9b3361

Ответ 1

Решение для привязки ключей (привязка кнопок +) с собственными командами:

Тело файла XAML:

<Window.Resources>
    <RoutedUICommand x:Key="MyCommand1" Text="Text" />
    <RoutedUICommand x:Key="MyCommand2" Text="Another Text" />
</Window.Resources>

<Window.CommandBindings>
    <CommandBinding Command="{StaticResource MyCommand1}" 
                    Executed="FirstMethod" />
    <CommandBinding Command="{StaticResource MyCommand2}" 
                    Executed="SecondMethod" />
</Window.CommandBindings>

<Window.InputBindings>
    <KeyBinding Key="Z" Modifiers="Ctrl" Command="{StaticResource MyCommand1}" />
    <KeyBinding Key="H" Modifiers="Alt" Command="{StaticResource MyCommand2}" />
</Window.InputBindings>

<Grid>
    <Button x:Name="btn1" Command="{StaticResource MyCommand1}" Content="Click me" />
    <Button x:Name="btn2" Command="{StaticResource MyCommand2}" Content="Click me" />
</Grid>

и .CS файл:

public partial class Window1 : Window
{
    public Window1()
    {
        InitializeComponent();
    }

    public void FirstMethod(Object sender, ExecutedRoutedEventArgs e)
    {
        // btn1
    }

    public void SecondMethod(Object sender, ExecutedRoutedEventArgs e)
    {
        // btn2
    }
}

Ответ 2

Это старый вид, но сегодня я столкнулся с тем же вопросом.
Я обнаружил, что самым простым решением является просто использовать элемент AccessText для содержимого кнопки.

<Button Command="{Binding SomeCommand}">
    <AccessText>_Help</AccessText>
</Button>

Когда вы нажимаете клавишу Alt, на кнопке будет подчеркнуто "H".
Когда вы нажимаете комбинацию клавиш Alt + H, команда, связанная с кнопкой, будет выполнена.

http://social.msdn.microsoft.com/Forums/vstudio/en-US/49c0e8e9-07ac-4371-b21c-3b30abf85e0b/button-hotkeys?forum=wpf

Ответ 3

Чтобы связать жесты клавиатуры, вам нужно использовать KeyGestures с командами. Подробнее об этом можно узнать commands. Также есть множество предопределенных команд, которые могут быть непосредственно использованы в вашем приложении (например, "Вырезать", "Копировать", "Вставить", "Справка", "Свойства" и т.д.).

Ответ 4

Ярлык просто h для вашего образца кода. На

Для первоначального отображения подчеркивания для ярлыков используется параметр Windows и не контролируется приложением. В Windows XP перейдите в меню "Свойства экрана → Внешний вид → Эффекты", и вы увидите флажок "Скрыть подчеркнутые буквы для навигации по клавиатуре, пока я не нажму клавишу Alt". Для Vista/Win7 я думаю, что они переместили эту настройку где-то еще.

Ответ 5

Самое простое решение, которое я нашел, - наклеить ярлык внутри кнопки:

<Button Name="btnHelp"><Label>_Help</Label></Button>