Жест клавиши WPF PageDown отображается как следующий в пункте меню - PullRequest
2 голосов
/ 18 июня 2010

Я установил пользовательскую команду с PageDown в качестве жеста клавиши, но для элемента MenuItem, связанного с этой командой, этот жест отображается как «Далее».Проблема в том, что у меня есть команды, которые используют PageUp, Home и End для связанных задач, и все они отображаются, как и ожидалось для их MenuItems.Есть ли какой-нибудь способ заставить MenuItem показывать «PageDown» вместо «Next» для согласованности?

Вот xaml, который определяет команды.

<Window.Resources>
    <RoutedUICommand x:Key="FirstPageCommand" 
                     Text="FirstPage">
        <RoutedUICommand.InputGestures>
            <KeyGesture>Home</KeyGesture>
        </RoutedUICommand.InputGestures>
    </RoutedUICommand>
    <RoutedUICommand x:Key="LastPageCommand" 
                     Text="LastPage">
        <RoutedUICommand.InputGestures>
            <KeyGesture>End</KeyGesture>
        </RoutedUICommand.InputGestures>
    </RoutedUICommand>
    <RoutedUICommand x:Key="PreviousPageCommand" 
                     Text="PreviousPage">
        <RoutedUICommand.InputGestures>
            <KeyGesture>PageUp</KeyGesture>
        </RoutedUICommand.InputGestures>
    </RoutedUICommand>
    <RoutedUICommand x:Key="NextPageCommand" 
                     Text="NextPage">
        <RoutedUICommand.InputGestures>
            <KeyGesture>PageDown</KeyGesture>
        </RoutedUICommand.InputGestures>
    </RoutedUICommand>
</Window.Resources>

И здесь я их используюв меню

<MenuItem Header="_View">
    <MenuItem Header="_First Page" 
              Command="{StaticResource FirstPageCommand}">
        <MenuItem.Icon>
            <Image Source="Images\Backward_01.png" 
               Stretch="Uniform"/>
        </MenuItem.Icon>
    </MenuItem>
    <MenuItem Header="_Previous Page" 
              Command="{StaticResource PreviousPageCommand}">
        <MenuItem.Icon>
            <Image Source="Images\Backward.png"
               Stretch="Uniform"/>
        </MenuItem.Icon>
    </MenuItem>
    <MenuItem Header="_Next Page" 
              Command="{StaticResource NextPageCommand}">
        <MenuItem.Icon>
            <Image Source="Images\Forward.png"
               Stretch="Uniform"/>
        </MenuItem.Icon>
    </MenuItem>
    <MenuItem Header="_Last Page" 
              Command="{StaticResource LastPageCommand}">
        <MenuItem.Icon>
            <Image Source="Images\Forward_01.png"
               Stretch="Uniform"/>
        </MenuItem.Icon>
    </MenuItem>
</MenuItem>

Мое меню выглядит следующим образом

  • Вид
  • Первая страница Home
  • Последняя страница PageUp
  • Следующая страница Следующая
  • Конец последней страницы

1 Ответ

3 голосов
/ 30 июня 2010

По-видимому, это возможно только в том случае, если вы определяете свои команды в коде следующим образом.

public class MyCommands
{
    public static RoutedUICommand NextPage { get; private set; }
    public static RoutedUICommand PreviousPage { get; private set; }

    static OCRopingCommands()
    {
        NextPage = new RoutedUICommand("NextPage", "NextPage", typeof(MyCommands));
        NextPage.InputGestures.Add(
            new KeyGesture(Key.PageDown, ModifierKeys.None, "PageDn"));
        PreviousPage = new RoutedUICommand("PreviousPage", "PreviousPage", typeof(MyCommands));
        PreviousPage.InputGestures.Add(
            new KeyGesture(Key.PageUp, ModifierKeys.None, "PageUp"));
    }
}

И вот как вы их подключите

<MenuItem Header="_Previous Page" 
          Command="local:MyCommands.PreviousPage">
    <MenuItem.Icon>
        <Image Source="Images\Backward.png"
           Stretch="Uniform"/>
    </MenuItem.Icon>
</MenuItem>
<MenuItem Header="_Next Page" 
          Command="local:MyCommands.NextPage">
    <MenuItem.Icon>
        <Image Source="Images\Forward.png"
           Stretch="Uniform"/>
    </MenuItem.Icon>
</MenuItem>

Почему KeyGestureне позволяет вам установить отображаемое имя в xaml вне моего понимания.

...