WPF编程宝典--命令

写在前面

前面我们学习了路由事件的相关内容,使用事件来响应广泛的鼠标和键盘动作,但是事件是非常低级的元素。在实际应用程序中,一些特定的功能被划分成高级的任务,这些任务就是所谓的命令。上面这些就是书上对命令的介绍,我也是一知半解,我对命令的理解就是,控件自带的一些特定功能,可以通过代码来激活和控制。

执行命令

//.xaml
<Button Height="100" Width="100" Command="New" Content="new"/>

//.xaml.cs
CommandBinding binding = new CommandBinding(ApplicationCommands.New);
binding.Executed += Binding_Executed;
binding.CanExecute += Binding_CanExecute;
this.CommandBindings.Add(binding);

private void Binding_Executed(object sender, ExecutedRoutedEventArgs e)
{
	MessageBox.Show("New command trigered by " + e.Source.ToString());
}

这就完成了一个命令的绑定,之后如果希望有多个绑定源,绑定同样的命令,就可以直接在控件里输入Command=“New”来实现。

禁用命令

//.xaml.cs
private void Binding_CanExecute(object sender, CanExecuteRoutedEventArgs e)
{
	e.CanExecute = true;
}

这里是直接设置成了true,正常使用。我们在实际项目中经常会用到一个全局变量来控制这个命令是否被禁用。

具有内置命令的控件

这里就拿TextBox来做例子吧,毕竟这个控件在实际项目中使用的还是比较多的。我们创建一个TextBox,就可以直接在这个控件上面使用基础的三个命令,分别是Cut,Copy,Paste。当然我们也可以将这些命令绑定到多个源上,这样更加丰富了我们的界面。
这里面有一个细节就是,我点击菜单上的选项,为什么应用程序能够精准的找到我想要的那个TextBox并执行操作呢,这是因为菜单类内置了一系列的逻辑,会在父容器中找到那个具有焦点的控件。
但是这样的处理方式又给我们实际项目带来了困难,如果菜单和TextBox不在同一个父容器中,那么是不是就不能是用了呢,关于这个问题,设计师给了我们两种方案去解决,

//第一种,指定目标
<Button Height="50" Width="300" Command="Cut" CommandTarget="{Binding ElementName=txt1}"/>

//第二种,使用附加属性FocusManager.IsFocusScope,在此元素的父容器中找焦点
<Grid FocusManager.IsFocusScope="True">
	<Button Height="50" Width="300" Command="Cut" Content="new" Margin="1,10,1,210"/>
</Grid>

高级命令

高级命令中讲解的主要是创建自定义命令并使用,这个我打算之后专门做一篇实战,就不在这里讲解了。

写在结尾

今天还是补充一些新型冠状病毒的知识。
都是病毒,为什么这个冠状病毒就这么厉害呢,普通的病毒有完整的DNA,他在人的身体里时,会吞噬正常的细胞,获取物质,然后分裂出跟他一样的病毒。但是不管他怎么分裂,他和正常的细胞都是不一样的,所以我们身体里的防御细胞,很轻松的就能认出他们,不管打不打得过,首先目标明确。但是冠状病毒它是RNA,他就像一个间谍一样,它找到正常的细胞后,会和正常的细胞结合,这样我们身体里的防御细胞就有可能被欺骗,跟容易对我们的身体造成危害。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值