主選單和一組工具欄的典型介面,則可以在選單,工具欄,上下文選單(例如,在主應用程式區域中單擊滑鼠右鍵時)使用新建(new)或開啟(open)等操作,以及使用鍵盤快捷鍵,如ctrl+n和ctrl+o.
對應上面的每種行為的響應**都完全一樣,但是傳統的gui 應用程式中,你不得不為每一種行為定義乙個對應的event 然後呼叫相同的方法。
這不是一種理想的處理方法。
在wpf中,微軟嘗試使用命令這個概念來解決這個問題。wpf會監聽鍵盤快捷鍵,並且如果存在合適的命令,會直接呼叫,這使得命令成為乙個理想的在應用中提供快捷鍵的方式。
命令實際上並沒有自己做任何事情。在根目錄中,它們由icommand介面組成,該介面僅定義乙個事件和兩個方法:execute()和canexecute()。第乙個用於執行實際操作,而第二個用於確定操作當前是否可用。
要執行命令的實際操作,您需要命令和**之間的鏈結,這是commandbinding發揮作用的地方。
commandbinding通常在window或usercontrol上定義,並儲存對它處理的command的引用,以及用於處理command的execute()和canexecute()事件的實際事件處理程式。
x:class
="命令.mainwindow"
xmlns
=""xmlns:x
=""title
="mainwindow"
height
="100"
width
="200"
>
>
command
= executed
="newcommand_executed"
canexecute
="newcommand_canexecute"
/>
window.commandbindings
>
horizontalalignment
="center"
verticalalignment
="center"
>
command
=>
newbutton
>
stackpanel
>
window
>
using system.windows;
using system.windows.input;
namespace 命令
private
void
newcommand_canexecute
(object sender,
canexecuteroutedeventargs e)
private
void
newcommand_executed
(object sender,
executedroutedeventargs e)
}}
**分析:首先在window上定義了commandbindings,並設定了3個屬性command,executed,canexecute。
command指明希望使用的命令,後兩者指定事件處理程式。
x:class
="命令.mainwindow"
xmlns
=""xmlns:x
=""title
="mainwindow"
height
="200"
width
="250"
>
>
command
= canexecute
="cutcommand_canexecute"
executed
="cutcommand_executed"
/>
command
= canexecute
="pastecommand_canexecute"
executed
="pastecommand_executed"
/>
window.commandbindings
>
>
dockpanel.dock
="top"
margin
="3"
>
command
= width
="60"
>
_cutbutton
>
command
= width
="60"
margin
="3,0"
>
_pastebutton
>
>
acceptsreturn
="true"
name
="txteditor"
/>
dockpanel
>
window
>
using system.windows;
using system.windows.input;
namespace 命令
private
void
cutcommand_canexecute
(object sender,
canexecuteroutedeventargs e)
private
void
cutcommand_executed
(object sender,
executedroutedeventargs e)
private
void
pastecommand_canexecute
(object sender,
canexecuteroutedeventargs e)
private
void
pastecommand_executed
(object sender,
executedroutedeventargs e)
}}
內建命令的表現,就好像命令實際做了事情
以上的是示例相當於用我們自己的命令去替換了wpf的內建命令。
如果僅僅是方便快捷的使用內建命令,完全不需要自己去寫。
x:class
="命令.mainwindow"
xmlns
=""xmlns:x
=""title
="mainwindow"
height
="200"
width
="250"
>
>
dockpanel.dock
="top"
margin
="3"
>
command
= commandtarget=""
width
="60"
>
_cutbutton
>
command
= commandtarget=""
width
="60"
margin
="3,0"
>
_pastebutton
>
>
acceptsreturn
="true"
name
="txteditor"
/>
dockpanel
>
window
>
using system.windows;
using system.windows.input;
namespace 命令
}}
不需要commandbindings,直接在button控制項中指明
就能實現文字的貼上與複製。
對wpf 的入門記錄總結 資料繫結之值轉換
前面弄了資料繫結,現在有這樣一種需求 使用同一種型別,但需要以不同方式呈現的場景。有乙個數值,但您希望以一種方式顯示零值,而以另一種方式顯示正數 想要根據值檢查checkbox,但值是乙個字串,如 是 或 否 而不是布林值 有乙個以位元組為單位的檔案大小,但您希望根據它的大小顯示為位元組,千位元組,...
WPF入門常用的元素和屬性總結
1 高度和寬度 不同尺寸的預設值 minheight maxheight height minwidth maxwidth width 0infinity nan auto 自動 其他尺寸 desiredsize rendersize actualheight actualwidth 2 邊框距離 ...
命令批處理實現對3389登入的日誌記錄
1 在乙個位置上建立乙個存放日誌和監控程式的目錄,比如我在c盤下建立乙個rdp的目錄 2 在其目錄下建立乙個名為rdplog.txt的文字檔案 3 在其目錄下建立乙個名為rdplog.bat的批處理檔案,內容為 date t rdplog.txt time t rdplog.txt netstat ...