3.修炼
3.1 自定义命令
涉及到的一些概念,例如 InputGestureCollection这个集合,路由命令(RoutedUICommand)等我们不用太紧张,潜移默化学会他们的用法,Ok,学习吧
先看代码,先看后台
using System.Collections.Generic;
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 Commands
{
public partial class CustomCommand : System.Windows.Window
{
public CustomCommand()
{
InitializeComponent();
}
private void RequeryCommand(object sender, ExecutedRoutedEventArgs e)
{
MessageBox.Show("Requery");
}
}
public class DataCommands
{
private static RoutedUICommand requery;
static DataCommands()
{
InputGestureCollection inputs = new InputGestureCollection();
inputs.Add(new KeyGesture(Key.R, ModifierKeys.Control, "Ctrl+R"));
requery = new RoutedUICommand(
"Requery", "Requery", typeof(DataCommands), inputs);
}
public static RoutedUICommand Requery
{
get { return requery; }
}
}
}
备注:我们主要看DataCommands类
InputGestureCollection 表示 输入手势的一个集合,里面放入InputGesture类型的手势,手势好别扭,俗语话吧叫手段,就是输入手段,例如键盘输入啊,鼠标输入等,这里KeyGesture懂英语的看字面就知道是键盘手段了,
new KeyGesture(Key.R, ModifierKeys.Control, "Ctrl+R"),这里一看,26个字母中是R键,ModifierKeys.Control是 ctrl 键,加起来就是Ctrl+R,后面那个应该是用来显示在菜单中后面的那个快捷键提示吧,ModifierKeys里面还有Shift,Alt,Windows,None等,自己试试就知道了,接下来就是向路由命令里面填值了,就是这个命令是什么快捷键啊,什么什么的,参数什么意思,你在vs中鼠标移上去,会有说明的,潜移默化(举一反三)一下吧,你们!
前台这样调用这个命令,因为以前我们都是调用系统的,这次是自己写的命令吧
前台页面
<Window x:Class="Commands.CustomCommand"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Commands" Height="300" Width="300"
xmlns:local="clr-namespace:Commands"
>
<Window.CommandBindings>
<CommandBinding Command="local:DataCommands.Requery"
Executed="RequeryCommand"/>
</Window.CommandBindings>
<Grid>
<Button Margin="5" Command="local:DataCommands.Requery">Requery</Button>
</Grid>
</Window>
直接在把那个Command后面的值不用系统的,用自己的,自己潜移默化吧,不懂的,看看前两章内容吧