如果 自己设置按钮的快捷键就用后台绑定
读取自己设置的快捷键见方法2
方法1
<Window x:Class="CustomerShortcutsDemo.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Window1" Height="300" Width="300"> <Window.Resources> <RoutedUICommand x:Key="btnClick1" Text="Button Click"/> </Window.Resources> <Window.InputBindings> <KeyBinding Key="I" Modifiers="Ctrl + Alt" Command="{StaticResource btnClick1}"/> </Window.InputBindings> <Window.CommandBindings> <CommandBinding Command="{StaticResource btnClick1}" CanExecute="CommandBinding_CanExecute1" Executed="CommandBinding_Executed1"/> </Window.CommandBindings> <Grid> <Button Content="Button 1" Height="23" HorizontalAlignment="Left" Margin="102,38,0,0" Name="button1" VerticalAlignment="Top" Width="75" Click="button1_Click" > </Button> </Grid></Window> |
后台
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Windows;using System.Windows.Controls;using System.Windows.Data;using System.Windows.Documents;using System.Windows.Input;using System.Windows.Media;using System.Windows.Media.Imaging;using System.Windows.Navigation;using System.Windows.Shapes;namespace CustomerShortcutsDemo{ /// <summary> /// Window1.xaml 的交互逻辑 /// </summary> public partial class Window1 : Window { public Window1() { InitializeComponent(); } private void button1_Click(object sender, RoutedEventArgs e) { //MessageBox.Show("God"); CustomerShortTwo win_CustomerShortTwo=new CustomerShortTwo(); win_CustomerShortTwo.Show(); } private void CommandBinding_CanExecute1(object sender, CanExecuteRoutedEventArgs e) { e.CanExecute = true; } private void CommandBinding_Executed1(object sender, ExecutedRoutedEventArgs e) { button1_Click(this, null); } }} |
第二种后台绑定
<Window x:Class="CustomerShortcutsDemo.CustomerShortTwo" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:CustomerShortcutsDemo" Title="CustomerShortTwo" Height="300" Width="300"> <Window.CommandBindings> <CommandBinding Command="local:CommandBindingDEmo.myCommand" CanExecute="cb_CanExecute" Executed="myRoudedEvent" /> </Window.CommandBindings> <Grid> <Menu Margin="40,107,96,122"> <MenuItem Header="文件"> <MenuItem Name="MyIte"/> <MenuItem Name="MyIteT"/> </MenuItem> </Menu> <Button Name="My_Button" Click="MyClick" Height="71" VerticalAlignment="Top" HorizontalAlignment="Left" Width="113"></Button> </Grid></Window> |
后台
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Windows;using System.Windows.Controls;using System.Windows.Data;using System.Windows.Documents;using System.Windows.Input;using System.Windows.Media;using System.Windows.Media.Imaging;using System.Windows.Shapes;namespace CustomerShortcutsDemo{ /// <summary> /// CustomerShortTwo.xaml 的交互逻辑 /// </summary> public partial class CustomerShortTwo : Window { public CustomerShortTwo() { InitializeComponent(); MyIte.Command = CommandBindingDEmo.myCommand; //this.CommandBindings.Add(cb); this.InputBindings.Add(new KeyBinding(CommandBindingDEmo.myCommand, new KeyGesture(Key.I, ModifierKeys.Alt | ModifierKeys.Control))); } void cb_CanExecute(object sender, CanExecuteRoutedEventArgs e) { e.CanExecute = true; } public void myRoudedEvent(object sender, ExecutedRoutedEventArgs e) { MyClick(null, null); } public void MyClick(object sender, RoutedEventArgs e) { MessageBox.Show("Click!"); } } public class CommandBindingDEmo { public static RoutedUICommand myCommand = new RoutedUICommand("Open", "ClickOpen", typeof(CommandBinding)); public static RoutedUICommand myCommandTwo = new RoutedUICommand("Close", "clickClose", typeof(CommandBinding)); }} |
出处:https://www.cnblogs.com/li-peng/archive/2012/12/20/2826821.html