Как я могу получить ярлыки для данной команды WPF? - PullRequest
0 голосов
/ 30 июля 2009

При наличии кнопки WPF с командой, как я могу получить назначенный ярлык (ex Copy -> Ctrl + C )

Ответы [ 3 ]

2 голосов
/ 30 июля 2009

Здесь вы можете заменить ApplicationCommands.Copy на команду, которую вы ищете.

foreach (KeyBinding binding in InputBindings)
{
    if (binding.Command == ApplicationCommands.Copy)
    {
        MessageBox.Show(binding.Modifiers.ToString() + " + " + binding.Key.ToString());
    }
}
1 голос
/ 30 июля 2009

Извините, я думаю, что это фактический ответ на ваш вопрос:

Button b = new Button();

b.Command = ApplicationCommands.Copy;

List<string> gestures = new List<string>();

if (b.Command is RoutedCommand)
{
    RoutedCommand command =  (b.Command as RoutedCommand);

    foreach (InputGesture gesture in command.InputGestures)
    {
        if (gesture is KeyGesture)
        gestures.Add((gesture as KeyGesture).DisplayString);
    }
}

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

<Button Command="ApplicationCommands.New" Content="{Binding RelativeSource={RelativeSource Self}, Path=Command.Text}"></Button>

Это будет иметь кнопку сказать "Новый".

0 голосов
/ 30 июля 2009

Использовать связывание клавиш - http://msdn.microsoft.com/en-us/library/ms752308.aspx

 <Window.InputBindings>
    <KeyBinding Key="C"
          Modifiers="Control" 
          Command="ApplicationCommands.Copy" />
 </Window.InputBindings>
...