潜移默化学会WPF--Command(命令)学习(四) - AYUI框架 - 博客园

原文: 潜移默化学会WPF--Command(命令)学习(四) - AYUI框架 - 博客园

4.提升-清新感受

   4.1  巧妙禁用系统命令

        前台代码

    <Grid>
<TextBox Name="txt">
</TextBox>
</Grid>

        先看后台代码

复制代码
 1 using System;
2 using System.Collections.Generic;
3 using System.Text;
4 using System.Windows;
5 using System.Windows.Controls;
6 using System.Windows.Data;
7 using System.Windows.Documents;
8 using System.Windows.Input;
9 using System.Windows.Media;
10 using System.Windows.Media.Imaging;
11 using System.Windows.Shapes;
12
13 namespace Commands
14 {
15 /// <summary>
16 /// Interaction logic for NoCommandTextBox.xaml
17 /// </summary>
18
19 public partial class NoCommandTextBox : System.Windows.Window
20 {
21
22 public NoCommandTextBox()
23 {
24 InitializeComponent();
25 txt.CommandBindings.Add(new CommandBinding(ApplicationCommands.Cut, null, SuppressCommand));
26 txt.InputBindings.Add(new KeyBinding(ApplicationCommands.NotACommand, Key.C, ModifierKeys.Control));
27 txt.ContextMenu = null;
28 }
29 private void SuppressCommand(object sender, CanExecuteRoutedEventArgs e)
30 {
31 e.CanExecute = false;
32 e.Handled = true;
33 }
34 }
35 }
复制代码

如果前面几章看懂了,这里可能就不用我解释了。   备注:文本框中的添加一个命令绑定,什么呢?就是 系统自带的剪切(Ctrl+X),将它的方法效果置空,SuppressCommand是个CanExecute方法,就是在执行方法之前的做个准备 那个方法

e.CanExecute = false; e.Handled = true;  

第一句是不执行命令中的方法,后面一个是防止 事件冒泡 这就关于事件那一章了,具体讲解一下吧

ABC分别表示一个容器或者其他的,D代表文本框,假如现在D有个KeyDown事件,ABC也都有1个键盘事件。

此时如果不加   e.Handled = true  该事件就会检测C有没有KeyDown事件,如果有,C的KeyDown事件也会触发,同理文本框以上的所有父元素都会触发一次。加了 e.Handled = true,文本框的父元素同类型的事件就不会触发了,提高了效率,大家知道冒泡,泡是从水底往水面上冒的,可以理解为从下往上,对了,那有没有从上往下的,有啊,如果出现了这种事件,那就是 隧道事件 了,这里我就不说了。

txt.ContextMenu = null;

就是将文本框的右键菜单设为空

那么此例子就是实现禁止剪切文本框的内容。

Ok,不说了。



分类: WPF
0
0
« 上一篇: 潜移默化学会WPF--Command(命令)学习(三)
» 下一篇: 潜移默化学会WPF--Command(命令)学习(五)(高级)
posted on 2019-03-01 22:11 NET未来之路 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/lonelyxmas/p/10459061.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值