WPF快速指导11:输入和命令

WPF快速指导11:输入和命令

本文摘要:

1:输入的种类;

2:命令    

 

1:输入的种类

    可在基元素类上找到公开的主输入 API:UIElementContentElementFrameworkElementFrameworkContentElement。除了基元素类上的输入 API,Keyboard 类和 Mouse 类还提供了用于处理键盘和鼠标输入的其他 API。

    Keyboard 类上的输入 API 的示例有 Modifiers 属性(用于返回当前按下的 ModifierKeys)和 IsKeyDown 方法(用于确定是否按下了指定的键)。

    下面的示例使用 GetKeyStates 方法确定 Key 是否处于按下状态。

if ((Keyboard.GetKeyStates(Key.Return) & KeyStates.Down) > 0)
{
    btnNone.Background = Brushes.Red;
}

 

     Mouse 类上的输入 API 的示例有 MiddleButton(用于获取鼠标中键的状态)和 DirectlyOver(用于获取鼠标指针当前位于其上的元素)。

     下面的示例确定鼠标上的 LeftButton 是否处于 Pressed 状态。

if (Mouse.LeftButton == MouseButtonState.Pressed)
{
    UpdateSampleResults("Left Button Pressed");
}

     还有一类是触笔输入Stylus,在这里不做赘述。

 

2:命令    

     使用命令,输入处理可以更多地在语义级别(而不是在设备输入级别)进行。命令是简单的指令,如 Cut、Copy、Paste 或 Open。命令对于集中命令逻辑很有用。同一命令可通过 Menu、在 ToolBar 上或者通过键盘快捷方式来访问。命令还提供了在命令不可用时禁用控件的机制。

     RoutedCommandICommand 的 WPF 实现。执行 RoutedCommand 时,将在命令目标上引发 PreviewExecutedExecuted 事件,这两个事件与其他输入一样,都通过元素树进行隧道和冒泡操作。如果未设置命令目标,则具有键盘焦点的元素将成为命令目标。执行该命令的逻辑将附加到 CommandBinding。当 Executed 事件访问该特定命令的 CommandBinding 时,将调用 CommandBinding 上的 ExecutedRoutedEventHandler。此处理程序执行命令的操作。

     WPF 提供了一个由 ApplicationCommandsMediaCommandsComponentCommandsNavigationCommandsEditingCommands 组成的常见命令库,您也可以定义自己的命令库。

     WPF 中的路由命令模型可以分为四个主要概念:命令、命令源、命令目标以及命令绑定:

  • 命令是要执行的操作。

  • 命令源是调用命令的对象。

  • 命令目标是在其上执行命令的对象。

  • 命令绑定是将命令逻辑映射到命令的对象。

NET C# 入门级 .NET C# 专业级 .NET 架构级 BS系统专业级 BS系统安全
1.开篇及C#程序、解决方案的结构
2.源码管理之TFS入门
3.打老鼠初级
……
21.CMS之主要功能实现
22.进程和线程基础
23.类型转换
24.算法基础
25.初级课程之剩余知识点
1.消灭打老鼠游戏中的自定义委托
2.垃圾回收
3.Dispose模式
……
16.异常使用指导
17.最常用的重构指导
18.Debug和IDE的进阶
19.Resharper的使用
20.ILSPY的使用
1.Socket入门
2.打造打老鼠游戏网络版
3.WCF入门
……
10.依赖注入
11.万物兼可测试
12.软件指标之覆盖率计算
13.软件指标之代码行
14.软件指标之圈复杂度、嵌套深度
1.HTML
2.WebForm原理
3.CSS必知必会
……
19.让浏览器缓存Shop
20.Asp.net的生命周期
21.Asp.net网站的发布以及调试晋级
22.BS程序的本质
23.压力测试我们的Shop
1.Fiddler必知必会
2.IE开发者工具必知必会
3.跨站脚本防范
4.权限欺骗防范
5.参数越界防范
6.会话劫持防范
7.CSRF防范
8.盗链防范
9.静态文件的保护


 
 
WPF快速指导11:输入和命令本文基于Creative Commons Attribution 2.5 China Mainland License发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名http://www.cnblogs.com/luminji(包含链接)。如您有任何疑问或者授权方面的协商,请给我留言。
上一篇:【FastReID】pytorch转tensorrt部署


下一篇:T-SQL笔记1:SELECT及SELECT高级应用