2010-06-17 58 views
2

我已经使用PageDown设置了一个自定义命令作为关键手势,但对于绑定到该命令的MenuItem,手势显示为“Next”。问题是我有使用PageUp,Home和End进行相关任务的命令,并且它们都按预期显示其MenuItems。有没有办法让MenuItem显示“PageDown”而不是“Next”来保持一致性?WPF关键手势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> 

我的菜单看起来像这样

  • 查看
    • 第一页首页
    • 尾页上一页
    • 下一页下
    • 尾页尾

回答

3

很显然,如果你在这样的代码中定义了你的命令,这是唯一可能的。

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中设置的显示名称是超越我。