首页 > Windows开发 > 详细

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

时间:2019-03-01 23:54:55      阅读:872      评论:0      收藏:0      [点我收藏+]
原文:潜移默化学会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--Command(命令)学习(四) - AYUI框架 - 博客园

原文:https://www.cnblogs.com/lonelyxmas/p/10459061.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!