我设置了一个自定义命令,其中PageDown作为键手势,但对于绑定到该命令的MenuItem,手势显示为“下一步”。问题是我有相关任务使用PageUp,Home和End的命令,它们都按照预期显示在MenuItem上。是否有一些方法可以使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>
我的菜单看起来像这样
答案 0 :(得分: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中设置显示名称超出我的范围。