2010-06-17 6 views
2

J'ai configuré une commande personnalisée avec PageDown comme geste clé, mais pour le MenuItem lié à cette commande, le geste apparaît comme "Next". Le problème est que j'ai des commandes qui utilisent PageUp, Home et End pour les tâches connexes et elles s'affichent toutes comme prévu pour leur MenuItems. Y at-il un moyen de rendre le MenuItem show "PageDown" au lieu de "Next" pour la cohérence?WPF key gesture PageDown apparaît comme Next dans le menu

Voici le xaml qui définit les commandes.

<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> 

Et voici où je les utilise dans un menu

<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> 

menu Mon ressemble à ce

  • Voir
    • Première page
    • Dernière page PageUp
    • suivante Page suivante
    • Dernière page Fin

Répondre

3

Apparemment, cela est possible uniquement si vous définissez vos commandes dans le code comme celui-ci.

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")); 
    } 
} 

Et voici comment vous les câbler

<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> 

Pourquoi KeyGesture ne vous permet pas de définir le nom d'affichage XAML est au-delà de moi.