對wpf 的入門記錄總結 命令概念與用法

2021-09-29 04:15:21 字數 3989 閱讀 6700

主選單和一組工具欄的典型介面,則可以在選單,工具欄,上下文選單(例如,在主應用程式區域中單擊滑鼠右鍵時)使用新建(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 ...