2010-06-17 55 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中設置的顯示名稱是超越我。