WPF應用開發(fā)項目教程課件4.4 WPF命令_第1頁
WPF應用開發(fā)項目教程課件4.4 WPF命令_第2頁
WPF應用開發(fā)項目教程課件4.4 WPF命令_第3頁
WPF應用開發(fā)項目教程課件4.4 WPF命令_第4頁
WPF應用開發(fā)項目教程課件4.4 WPF命令_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

本章導讀:本章的主要內容是WPF的命令的相關知識。然后通過項目“實現(xiàn)窗體的清除功能程序”為導向,三個任務(創(chuàng)建使用簡單命令的程序、創(chuàng)建使用復雜命令的程序和使用自定義命令的程序)為驅動,學習有關WPF命令的知識,本項目著力使學習者對WPF的命令有一定認識,初步掌握自定義命令的用法。項目四

WPF命令—實現(xiàn)窗體的清除功能

——任務四使用自定義命令實現(xiàn)清除功能的程序

本次任務實現(xiàn)的是點擊“重置”按鈕時,清除各個文本框里面的內容。

在讀者添加功能中,讀者編號是必須添加的,其他內容可以在添加讀者帳號后,由讀者以自己用戶名密碼登錄系統(tǒng)自行修改即可。所以當讀者編號文本框沒有輸入內容時,按鈕是不可用的,當里面有文字的話,按鈕可用。效果如圖所示:一、任務描述:一、任務描述:二、知識準備:1命令參數(shù)

前面提到的命令庫里面有很多WPF預制命令,如New,Open,Copy,Cut,Paste等。這些命令都是ApplicationCommands類的靜態(tài)屬性,所以它們的實例永遠只能有一個,這就引起了一個問題:如果界面上有兩個按鈕一個用來創(chuàng)建Student檔案,一個用來創(chuàng)建Teacher檔案。都使用New命令的話,程序應該如何區(qū)別新建的是什么檔案呢?二、知識準備:1、命令參數(shù)答案是使用CommandParameter,命令源一定是實現(xiàn)了ICommandSource接口的對象,而ICommandSource有一個屬性就是CommandParameter。下面我們通過一個例子來學習命令參數(shù)的知識。如下是程序的運行效果圖。二、知識準備:1、命令參數(shù)二、知識準備:具體實現(xiàn)步驟如下:(1)新建WPF項目,名稱為MyCommandParameter。外觀布局代碼如下<Window……x:Name="mainWindow"><BorderBorderThickness="3"BorderBrush="LightBlue">//自定義WPF外觀設計</Border></Window>二、知識準備:<GridMargin="14"><Grid.RowDefinitions><RowDefinition/><RowDefinition/><RowDefinition/><RowDefinition/><RowDefinition/></Grid.RowDefinitions>//自定義表格設計</Grid>二、知識準備:<GridGrid.Row="0"><Grid.ColumnDefinitions><ColumnDefinition/><ColumnDefinition/></Grid.ColumnDefinitions><TextBlockText="輸入姓名:"FontSize="25"Margin="5"/><TextBox

Grid.Column="1"Margin="5"x:Name="txtName"/></Grid>

二、知識準備:<ButtonCommandParameter="Teacher"x:Name="button1"Content="獲取同一個命令,使用教師作參數(shù)"Grid.Row="1"Margin="8"FontSize="18"/><ButtonCommandParameter="Student"x:Name="button2"Content="獲取同一個命令,使用學生作參數(shù)"Grid.Row="2"Margin="8"FontSize="18"/><ListBoxx:Name="listBox1"Grid.Row="3"Grid.RowSpan="2"FontSize="13"/>二、知識準備:(2)后臺編寫如何使用CommandParameter,代碼如下:publicMainWindow(){

InitializeComponent();

InitCmd();}privateRoutedCommand

myCmd=newRoutedCommand("MyNewTest",typeof(MainWindow));二、知識準備:privatevoidInitCmd(){//創(chuàng)建命令關聯(lián)

CommandBinding

myCommandBinding=newCommandBinding();

myCommandBinding.Command=myCmd;

myCommandBinding.CanExecute+=newCanExecuteRoutedEventHandler(CanExecute1);

myCommandBinding.Executed+=newExecutedRoutedEventHandler(Executed1);二、知識準備://把命令關聯(lián)安置在外圍控件上

mainWindow.CommandBindings.Add(myCommandBinding);

//把命令賦值給命令源(發(fā)送者)button1.Command=myCmd;button2.Command=myCmd;}

二、知識準備:privatevoidCanExecute1(objectsender,CanExecuteRoutedEventArgse){if(string.IsNullOrWhiteSpace(txtName.Text)){

e.CanExecute=false;}else{

e.CanExecute=true;}}二、知識準備:privatevoidExecuted1(objectsender,ExecutedRoutedEventArgse){stringname=txtName.Text;if(e.Parameter.ToString()=="Teacher"){listBox1.Items.Add("老師"+name+"認為:WPF很簡單!");}if(e.Parameter.ToString()=="Student"){listBox1.Items.Add("學生"+name+"認為:WPF很難!");}}二、知識準備:(3)程序的運行效果和上面的相同:當txtName.Text為空時,命令不可被執(zhí)行。當在文本框中輸入內容,執(zhí)行后效果如下:注意:

例題中兩個按鈕使用的是同一命令,但分別以不同的字符串作為參數(shù),執(zhí)行的動作也可以不一樣。本例是為窗體添加CommandBinding,而CanExecute和Execute事件處理寫在后臺C#代碼里。二、知識準備:本次任務實現(xiàn)的是,點擊“重置”按鈕后清除各個文本框里的內容。按著上述例子很容易實現(xiàn)此功能。本次任務我們希望精簡代碼隱藏文件,使用XAML以聲明方式關聯(lián)命令的方式實現(xiàn)。三、任務分析:1.打開已經建好的WPF項目,選擇名稱為BookInsertWin.xaml文件。窗體設計用到的主要控件及說明如下,具體設計代碼略。控件類型控件名稱說明Gridgrid1用于布局設計TextBlock

用于顯示提示信息TextBoxtxtReaderIn1~txtReaderIn4用于輸入讀者相關信息RadioButtonrdo1、rdo2用于設置讀者的性別Buttonbtn1、btnReset、btn2完成對應的功能四、任務實施:2.向項目中添加一個MyClearCommandClass的類文件,其內容如下:

classMyClearCommandClass{publicstaticRoutedCommand

MyClearCmd=newRoutedCommand();}四、任務實施:注意其中的RoutedCommand

類型的字段MyClearCmd。它定義了一個將被窗體控件所調用的命令。需要對RoutedCommand進行解析。四、任務實施:usingSystem.Windows.Input;3.在Window元素中加入對本項目命名空間的引用(其目的是在XAML中使用代碼中的類)。名稱控件用local標識。BookMis項目內的所有文件都可以通過“l(fā)ocal:”的方式使用自定義的MyClearCommandClass類。<Window……

xmlns:local="clr-namespace:BookMis"Title="ReaderInsert"Height="500"Width="480“>四、任務實施:4.給最頂層元素Window添加命令綁定。<Window.CommandBindings><CommandBinding

Command="local:MyClearCommandClass.MyClearCmd"Executed="myExecuted"CanExecute="myCanExecute"/></Window.CommandBindings>5.修改btnReset按鈕的聲明,加上Command屬性。<Buttonx:Name="btnReset"Command="local:MyClearCommandClass.MyClearCmd"

FontSize="19"Content="重置"Height="40"Width="76"/>四、任務實施:6.在執(zhí)行命令之前,要先檢查命令是否可以執(zhí)行對應的處理器。voidMyCanExecute(objectsender,CanExecuteRoutedEventArgse){if(string.IsNullOrEmpty(this.textReaderIn1.Text)){e.CanExecute=false;}else

溫馨提示

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

最新文檔

評論

0/150

提交評論