WPF中的命令简述——出自《IT168》

在我们日常的应用程序操作中,经常要处理各种各样的命令和进行相关的事件处理,比如需要复制、粘贴文本框中的内容 ; 上网查看网页时,可能需要返回上一网页 查看相应内容 ; 而当我们播放视频和多媒体时,我们可能要调节音量,快速拖动到我们想看的片段等等。在 Winform 编程中,我们经常使用各种各样的控件来 解决此类问题,当然我们也必须编写一堆代码来处理各种各样的命令和事件处理。那么, Windows Presentation Foundation (WPF) 作为微软新一代图形图像支援系统,它是如何处理这些命令及事件的呢?

   
WPF 中,许多控件都自动集成了固有的命令集。比如文本框 TextBox 就提供了复制 (Copy), 粘贴 (Paste), 裁切 (Cut), 撤消 (Undo) 和重做 (Redo) 命令等。

   WPF
提供常用应用程序所用的命令集,常用的命令集包括: ApplicationCommands, ComponentCommands, NavigationCommands, MediaCommands EditingCommands

ApplicationCommands
(应用程序命令) :
CancelPrint:
取消打印
Close
:关闭
ContextMenu
:上下文菜单
Copy
:复制
CorrectionList
Gets the value that represents the Correction List command.
Cut
:剪切
Delete
:删除
Find
:查找
Help
:帮助
New
:新建
NotACommand
:不是命令,被忽略
Open
:打开
Paste
:粘贴
Print
:打印
PrintPreview
:打印预览
Properties
:属性
Redo
:重做
Replace
:取代
Save
:保存
SaveAs
:另存为
SelectAll
:选择所有的
Stop
:停止
Undo
:撤消

ComponentCommands
(组件命令) :
ExtendSelection
:后接 Down/Left/Right/Up, 比如: ExtendSelectionDown Shift+Down,Extend Selection Down) ExtendSelectionLeft
Move
:后接 Down/Left/Right/Up, 如: MoveDown
MoveFocus
:后接 Down/Forward/Back/Up, 如: MoveFocusDown
MoveFocusPage
:后接 Down/Up, 如: MoveFocusPageUp
MoveTo
:后接 End/Home/PageDown/PageUp ,比如: MoveToPageDown
ScrollByLine
ScrollPage
:后接 Down/Left/Right/Up ,比如: ScrollPageLeft
SelectTo
End/Home/PageDown/PageUp ,比如: SelectToEnd

NavigationCommands
(导航命令):
Browse
浏览 : 后接 Back/Forward/Home/Stop, 比如: BrowseBack
缩放显示: DecreaseZoom, IncreaseZoom, Zoom
Favorites
(收藏)
页面: FirstPage, LastPage, PreviousPage, NextPage,GoToPage
NavigateJournal
Refresh(
刷新 )
Search
(搜索)

MediaCommands
(多媒体控制命令) :
Treble
高音: DecreaseTreble,IncreaseTreble
Bass
低音 :BoostBass,DecreaseBass,IncreaseBass
Channel
频道: ChannelDown,ChannelUp
MicrophoneVolume
麦克风音量调节 :DecreaseMicrophoneVolume,IncreaseMicrophoneVolume,MuteMicrophoneVolume
ToggleMicrophoneOnOff:
麦克风开关
Volume
音量 : DecreaseVolume,IncreaseVolume,MuteVolume
Rewind, FastForward(
回放,快进 )
Track
轨道 :PreviousTrack,NextTrack [ 上一段 ( )]
Play,Pause,Stop,Record(
播放,暂停,停止,录制 )
TogglePlayPause
Select
选择

EditingCommands
(编辑 / 排版类命令) :
Align
对齐: AlignCenter,AlignJustify,AlignLeft,AlignRight( 居中,撑满,左对齐,右对齐 )
Backspace
退格
TabForward,TabBackward(Tab
前缩, Tab 向后 )
FontSize
字体大小: DecreaseFontSize,IncreaseFontSize
Indentation
缩排: DecreaseIndentation, IncreaseIndentation
Delete
删除 : Delete 选中部分, DeleteNextWord :删除后一字 ,DeletePreviousWord :删除前一字
EnterLineBreak
:换行
EnterParagraphBreak
:换段
CorrectSpellingError/IgnoreSpellingError
:纠正 / 忽略拼写错误
MoveUpByLine,MoveDownByLine:
/ 下移一行,
MoveUpByPage,MoveDownByPage:
/ 下移一页
MoveUpByParagraph,MoveDownByParagraph:
/ 下移一段
MoveLeftByCharacter/MoveRightByCharacter
:左 / 右移一字符
MoveLeftByWord/MoveRightByWord
/ 右移一词
MoveToDocumentStart/MoveToDocumentEnd:
到文章开头 / 结尾
MoveToLineStart/MoveToLineEnd:
到一行的开头 / 结尾
SelectUpByLine,SelectDownByLine
:向上 / 下选一行
SelectUpByPage,SelectDownByPage
:向上 / 下选一页
SelectUpByParagraph,SelectDownByParagraph
:向上 / 下选一段
SelectLeftByCharacter,SelectRightByCharacter:
向左 / 右选中一字
SelectLeftByWord,SelectRightByWord:
向左 / 右选中一词
SelectToDocumentStart,SelectToDocumentEnd:
选中到篇头 / 篇尾
SelectToLineStart/SelectToLineEnd:
选中到行首 / 行尾
ToggleBold, ToggleItalic, ToggleUnderline(
加粗,斜体,下划线 )
ToggleBullets, ToggleNumbering(
列表:加点,加数字 )
ToggleInsert:
插入
ToggleSuperscript,ToggleSubscript(
上标字,下标字 )

先来举一个简单的例子:

XAML
代码 :

同等C# 代码 :

上面代码演示了将对文本框设置为焦点时,菜单项可用,点击菜单项时,将执行粘贴命令。

下面列出关于 Command 的四个概念和四个小问题:
1
WPF Command( 命令 ) 的四个概念:
(1)
命令 command: 要执行的动作。
(2)
命令源 command source :发出命令的对象(继承自 ICommandSource )。
(3)
命令目标 command target :执行命令的主体
(4)
命令绑定 command binding :映射命令逻辑的对象
如在上面示例中,粘贴( Paste )就是命令( command , 菜单项 (MenuItem) 是命令源 (command source), 文本框 (TextBox) 是命令目标对象 (command target), 命令绑定到 command binding 文本框 (TextBox) 控件上。

提示: WPF 中的命令都继承自 ICommand 接口。 ICommand 暴露两个方法: Execute 方法、 CanExecute 方法和一个事件: CanExecuteChanged
继承自 ICommandSource 的有: ButtonBase, MenuItem, Hyperlink InputBinding
Button GridViewColumnHeader ToggleButton RepeatButton 继承自 ButtonBase System.Windows.Input.KeyBinding MouseBinding 继承自 InputBinding

2 、四个小问题:
1 )如何指定 Command Sources?
XAML: (请将 “ApplicationCommands.Properties” 换成对应的 ApplicationCommands 属性值,比如:

同等的 C# 代码:

2 )如何指定快捷键?
XAML 代码 :


同等C# 代码:

3 )如何 Command Binding

XAML
代码:

同等C# 代码:

具体的事件处理:
C#
代码:

4 )如何设置 Command Target 并进行绑定 Command Binding
XAML 代码:

同等C# 代码:

以上例子全是单条命令绑定的情形,事实上,你也可以多个按钮多条命令绑定到同一控件上,比如:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值