WPF應(yīng)用開發(fā)項(xiàng)目教程課件4.1 WPF命令_第1頁
WPF應(yīng)用開發(fā)項(xiàng)目教程課件4.1 WPF命令_第2頁
WPF應(yīng)用開發(fā)項(xiàng)目教程課件4.1 WPF命令_第3頁
WPF應(yīng)用開發(fā)項(xiàng)目教程課件4.1 WPF命令_第4頁
WPF應(yīng)用開發(fā)項(xiàng)目教程課件4.1 WPF命令_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費(fèi)閱讀

付費(fèi)下載

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

本章導(dǎo)讀:本章的主要內(nèi)容是WPF的命令的相關(guān)知識。然后通過項(xiàng)目“實(shí)現(xiàn)窗體的清除功能程序”為導(dǎo)向,三個(gè)任務(wù)(創(chuàng)建使用簡單命令的程序、創(chuàng)建使用復(fù)雜命令的程序和使用自定義命令的程序)為驅(qū)動(dòng),學(xué)習(xí)有關(guān)WPF命令的知識,本項(xiàng)目著力使學(xué)習(xí)者對WPF的命令有一定認(rèn)識,初步掌握自定義命令的用法。項(xiàng)目四WPF命令—實(shí)現(xiàn)窗體的清除功能

——任務(wù)一創(chuàng)建使用簡單命令的程序

定義一系列菜單,執(zhí)行對窗體中文本框的復(fù)制、剪切、粘貼操作。一、任務(wù)描述:二、知識準(zhǔn)備:1命令是什么2WPF的命令庫3命令綁定

在這之前,我們學(xué)習(xí)了路由事件的相關(guān)內(nèi)容,使用路由事件可以響應(yīng)鼠標(biāo)和鍵盤動(dòng)作。但是在WPF應(yīng)用程序中,功能被劃分成很多任務(wù),這些任務(wù)可以通過不同的動(dòng)作和用戶界面元素觸發(fā),包括主菜單、上下文菜單、鍵盤快捷鍵以及工作欄。在WPF中可以定義這些任務(wù)為命令,并將控件連接到命令,從而不需要重復(fù)的編寫事件處理代碼。更重要的是,當(dāng)連接的命令不可用時(shí),命令特性通過自動(dòng)禁用控件來管理用戶界面的狀態(tài)。二、知識準(zhǔn)備:WPF中命令的核心是System.Windows.Input.ICommand接口,所有命令對象都實(shí)現(xiàn)了此接口。ICommand接口非常簡單,只包含兩個(gè)方法和一個(gè)事件:二、知識準(zhǔn)備:1、命令是什么?Execute方法:命令執(zhí)行,或者說命令作用于目標(biāo)之上。CanExecute方法:在執(zhí)行之前來判斷命令是否可被執(zhí)行。CanExecuteChanged事件:當(dāng)命令執(zhí)行狀態(tài)發(fā)生改變時(shí),可激發(fā)此事件來通知其他對象。當(dāng)創(chuàng)建自己的命令時(shí),不能直接實(shí)現(xiàn)ICommand接口,而是要使用System.Windows.Input.RoutedCommand類,該類已經(jīng)實(shí)現(xiàn)了ICommand接口,RoutedCommand在實(shí)現(xiàn)ICommand接口時(shí),并未向其中添加任何邏輯,所有WPF命令都是RouteCommand類的實(shí)例。RoutedCommand類是WPF中唯一實(shí)現(xiàn)了ICommand接口的類,即所有WPF命令都是RoutedCommand類及其派生類的實(shí)例二、知識準(zhǔn)備:1、命令是什么?WPF提供常用應(yīng)用程序所用的命令集,常用的命令集包括:ApplicationCommands,ComponentCommands,NavigationCommands,MediaCommands和EditingCommands。

二、知識準(zhǔn)備:2、WPF的命令庫ApplicationCommands(應(yīng)用程序命令):

提供一組標(biāo)準(zhǔn)的與應(yīng)用程序相關(guān)的通用命令,包括剪貼板命令(如Copy、Cut和Paste)以及文檔命令(如New、Open、Save、Close等)。具體信息見下表所示。2、WPF的命令庫二、知識準(zhǔn)備:名稱說明CancelPrint獲取表示“取消打印”命令的值Close獲取表示“關(guān)閉”命令的值ContextMenu獲取表示“上下文菜單”命令的值Copy獲取表示“復(fù)制”命令的值Cut獲取表示“剪切”命令的值Delete獲取表示“刪除”命令的值Find獲取表示“查找”命令的值Help獲取表示“幫助”命令的值New獲取表示“新建”命令的值Open獲取表示“打開”命令的值二、知識準(zhǔn)備:名稱說明Paste獲取表示“粘貼”命令的值Print獲取表示“打印”命令的值PrintPreview獲取表示“打印預(yù)覽”命令的值Properties獲取表示“屬性”命令的值Redo獲取表示“重復(fù)”命令的值Replace獲取表示“替換”命令的值Save獲取表示“保存”命令的值SaveAs獲取表示“另存為”命令的值SelectAll獲取表示“全選”命令的值Stop獲取表示“停止”命令的值Undo獲取表示“撤消”命令的值二、知識準(zhǔn)備:ComponentCommands(組件命令):

提供一組標(biāo)準(zhǔn)的由用戶界面組件使用的命令,包括用于移動(dòng)和選擇內(nèi)容的命令,這些命令和EditingCommands類中的一些命令相似(甚至完全相同)。這些命令具有預(yù)定義的按鍵輸入筆勢和

RoutedUICommand.Text

屬性。包含MoveLeft、MoveRight、MoveUp等。2、WPF的命令庫二、知識準(zhǔn)備:NavigationCommands(導(dǎo)航命令):

提供一組標(biāo)準(zhǔn)的與導(dǎo)航相關(guān)的命令,包括BrowseHome、BrowseStop、BrowseStop等。具體信息信息略。MediaCommands(多媒體控制命令):

提供一組標(biāo)準(zhǔn)的與媒體相關(guān)的命令,包括Play、Pause、Stop等。具體信息信息略。EditingCommands(編輯/排版類命令):

提供一組標(biāo)準(zhǔn)的與編輯相關(guān)的命令,包括用于移動(dòng)的命令(MoveToLineEnd、MoveLeftByWord和MoveUpByPage等),選擇內(nèi)容的命令(SelectToLineEnd、SelectLeftByWord),以及改變格式的命令(ToggleBold和ToggleUnderline)等。2、WPF的命令庫二、知識準(zhǔn)備:命令庫中的命令總是可用的。觸發(fā)它們的最簡單方法是將它們關(guān)聯(lián)到一個(gè)實(shí)現(xiàn)了ICommandSource接口的控件,其中包括繼承自ButtonBase類的控件(Button和CheckBox等)、單獨(dú)的ListBoxItem對象、Hyperlink以及MenuItem。 ICommandSource接口定義了三個(gè)屬性,見下表:2、WPF的命令庫二、知識準(zhǔn)備:名稱說明Command指向連接的命令。這是唯一必需的細(xì)節(jié)CommandParameter提供其他希望跟隨命令發(fā)送的數(shù)據(jù)CommandTarget確定將要在其中執(zhí)行命令的元素2、WPF的命令庫二、知識準(zhǔn)備:例如,下面的按鈕使用Command屬性連接到ApplicationCommands.New命令:<ButtonCommand=”ApplicationCommands.New”>New</Button>2、WPF的命令庫二、知識準(zhǔn)備:

當(dāng)將命令關(guān)聯(lián)到命令源時(shí),就會(huì)看到命令源將會(huì)被自動(dòng)禁用。例如,如果創(chuàng)建上一節(jié)中提到的New按鈕,該按鈕的顏色會(huì)變淺并且不能單擊,就像將IsEnabled屬性設(shè)置為false那樣。這是因?yàn)榘粹o已經(jīng)查詢了命令的狀態(tài)。而且由于命令還沒有與之關(guān)聯(lián)的綁定,所以它被認(rèn)為是禁用的。3、命令綁定二、知識準(zhǔn)備:為了改變這種狀態(tài),需要為命令創(chuàng)建綁定,以明確以下三件事情:2、WPF的命令庫(1)當(dāng)命令被觸發(fā)時(shí)進(jìn)行什么操作(2)如何確定命令是否能夠被執(zhí)行(這是可選的。只要提供了關(guān)聯(lián)的事件處理程序,命令就總是可以)。(3)命令在何處起作用。例如,命令可以被限制在單個(gè)按鈕中使用,也可以在整個(gè)窗口中使用。二、知識準(zhǔn)備:下面的代碼片段為New命令創(chuàng)建綁定??蓪⑦@些代碼添加進(jìn)窗口的構(gòu)造函數(shù)中。CommandBindingbind=newCommandBinding(ApplicationCommands.New);bind.Executed+=NewComand_Executed;this.CommandBindings.Add(bind);2、WPF的命令庫二、知識準(zhǔn)備:上面創(chuàng)建的CommandBinding對象被添加到包含窗口的CommandBindings集合中。它通過事件冒泡進(jìn)行工作。實(shí)際上,當(dāng)按鈕被單擊時(shí),CommandBinding.Executed事件從按鈕冒泡到包含元素。盡管習(xí)慣上為窗口添加所有綁定,但CommandBindings屬性實(shí)際上是在UIElement基類中定義的。這意味著任何元素都支持該屬性。只是為了得到最大的靈活性,命令綁定通常被添加到頂級窗口。2、WPF的命令庫二、知識準(zhǔn)備:上面的代碼包含了一個(gè)命名為NewComand_Executed的事件處理程序,該處理程序中包含一些顯示命令源的簡單代碼:privatevoidNewComand_Executed(objectsender,ExecutedRoutedEventArgse){

MessageBox.Show(“命令源為:”+e.Source.ToString());}2、WPF的命令庫二、知識準(zhǔn)備:現(xiàn)在,如果運(yùn)行應(yīng)用程序,按鈕是啟用的。如果單擊按鈕,就會(huì)觸發(fā)Executed事件,該事件冒泡至窗口,并被上面給出的NewComand()事件處理程序處理。這時(shí),WPF會(huì)告知事件源(按鈕)。運(yùn)行如圖所示。2、WPF的命令庫二、知識準(zhǔn)備:要實(shí)現(xiàn)剪切、復(fù)制、粘貼等功能,結(jié)合命令系統(tǒng)知識,我們可以在窗體上XAML中寫入標(biāo)簽的Command,并賦值A(chǔ)pplicationCommands命令系統(tǒng)的命令值。三、任務(wù)分析:1.新建WPF項(xiàng)目,名稱為SimpleCommand.xaml。窗體外觀設(shè)計(jì)如圖所示,代碼自行編寫。四、任務(wù)實(shí)施:2.各菜單項(xiàng)使用命令庫ApplicationCommands中的相應(yīng)命令,主要代碼如下所示:

<MenuItemHeader="Edit"><MenuItemx:Name="menuCopy"Header="Copy"Command="ApplicationCommands.Copy"/><MenuItemx:Name="menuCut"Header="Cut"Command="ApplicationCommands.Cut"/><MenuItemx:Name="menuPaste"Header="Paste"Command="ApplicationCommands.Paste"/></MenuItem>四、任務(wù)實(shí)施:3.單擊工具欄的“啟動(dòng)”按鈕(或者按快捷鍵F5),即可看到效果。四、任務(wù)實(shí)施:4.Copy、Cut和Paste命令是剪貼板命令,此時(shí)看到Copy、Cut菜單項(xiàng)是灰色的,被自動(dòng)禁用了,而Paste菜單項(xiàng)可以使用,是因?yàn)橹白鲞^復(fù)制或剪切的操作。當(dāng)在TextBox中輸入內(nèi)容或點(diǎn)擊Paste輸出內(nèi)容到TextBox中,Copy及Cut就可以起作用了。如圖所示。四、任務(wù)實(shí)施:此任務(wù)還有個(gè)細(xì)節(jié),Cut、Copy和Paste命令被具有焦點(diǎn)的文本框處理。這一過程之所以能夠無縫的工

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論