wpf 菜单 键盘快捷键 WPF Keyboard Shortcuts in Menu Item

本文介绍了一个使用WPF实现自定义路由命令的例子,包括缩放功能的实现方式。通过C#代码和XAML定义了两个自定义的RoutedCommand用于控制Zoom In和Zoom Out操作,并为这些命令绑定了快捷键。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Source: http://expression.microsoft.com/zh-cn/library/system.windows.input.routedcommand(printer).aspx

cs code:

namespace NameSpace { public partial class MainForm : Window {... public static RoutedCommand CustomRoutedCommandZoomIn = new RoutedCommand(); public static RoutedCommand CustomRoutedCommandZoomOut = new RoutedCommand(); private void CommandBinding_CanExecute(object sender, CanExecuteRoutedEventArgs e) { Control target = e.Source as Control; if (target != null) { e.CanExecute = true; } else { e.CanExecute = false; } } private void MenuItemZoomIn_Click(object sender, RoutedEventArgs e) { // Do zoom in } private void MenuItemZoomOut_Click(object sender, RoutedEventArgs e) { // Do zoom out }

xaml:

<Window ..... xmlns:mynamespace="clr-namespace:NameSpace" .....> <Window.CommandBindings> <CommandBinding Command="{x:Static mynamespace:MainForm.CustomRoutedCommandZoomIn}" CanExecute="CommandBinding_CanExecute" Executed="MenuItemZoomIn_Click"/> <CommandBinding Command="{x:Static mynamespace:MainForm.CustomRoutedCommandZoomOut}" CanExecute="CommandBinding_CanExecute" Executed="MenuItemZoomOut_Click"/> </Window.CommandBindings> <Window.InputBindings> <KeyBinding Command="{x:Static mynamespace:MainForm.CustomRoutedCommandZoomIn}" Key="I" Modifiers="Ctrl"></KeyBinding> <KeyBinding Command="{x:Static mynamespace:MainForm.CustomRoutedCommandZoomOut}" Key="O" Modifiers="Ctrl"></KeyBinding> </Window.InputBindings> ... <MenuItem Header="Zoom _In" InputGestureText="Ctrl+I" Command="{x:Static mynamespace:MainForm.CustomRoutedCommandZoomIn}"></MenuItem> <MenuItem Header="Zoom _Out" InputGestureText="Ctrl+O" Command="{x:Static mynamespace:MainForm.CustomRoutedCommandZoomOut}"></MenuItem> ... </Window>

Click or shortcuts work well now.

If you haveany better solution please let me know.

Thanks

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值