第8章WPF控件_第1頁
第8章WPF控件_第2頁
第8章WPF控件_第3頁
第8章WPF控件_第4頁
第8章WPF控件_第5頁
已閱讀5頁,還剩51頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、教育部普通高等教育十二五國家級規(guī)劃教材教育部普通高等教育十二五國家級規(guī)劃教材C#程序設計及應用教程程序設計及應用教程第第3版版(包括簡化版:(包括簡化版:C#程序設計教程程序設計教程第第3版)版)第第8章章 WPF控件控件2Ch8 WPF控件控件8.1 控件模型和內(nèi)容模型控件模型和內(nèi)容模型 8.2 常用布局控件常用布局控件 8.3 常用基本控件常用基本控件8.4 菜單、工具條和狀態(tài)條菜單、工具條和狀態(tài)條8.5 圖像和圖像和GIF動畫動畫8.6 其他其他WPF控件控件38.1 控件模型和內(nèi)容模型控件模型和內(nèi)容模型lWPF控件有一個共同的基本模型,稱為控件模型和內(nèi)容模型??丶幸粋€共同的基本模型,

2、稱為控件模型和內(nèi)容模型。l內(nèi)置的內(nèi)置的WPF控件控件 功能分類內(nèi)置的控件按鈕Button、RepeatButton數(shù)據(jù)顯示DataGrid、ListView、TreeView日期顯示和選擇Calendar、DatePicker對話框OpenFileDialog、PrintDialog、SaveFileDialog數(shù)字墨跡InkCanvas、InkPresenter文檔DocumentViewer、FlowDocumentPageViewer、FlowDocumentReader、FlowDocumentScrollViewer、StickyNoteControl輸入TextBox、RichTe

3、xtBox、PasswordBox布局Border、BulletDecorator、Canvas、DockPanel、Expander、Grid、GridView、GridSplitter、GroupBox、Panel、ResizeGrip、Separator、ScrollBar、ScrollViewer、StackPanel、Thumb、Viewbox、VirtualizingStackPanel、Window、WrapPanel媒體Image、MediaElement、SoundPlayerAction菜單ContextMenu、Menu、ToolBar導航Frame、Hyperlink、

4、Page、NavigationWindow、TabControl選擇CheckBox、ComboBox、ListBox、RadioButton、Slider用戶信息AccessText、Label、Popup、ProgressBar、StatusBar、TextBlock、ToolTip48.1 控件模型和內(nèi)容模型控件模型和內(nèi)容模型lWPF控件模型控件模型 內(nèi)容:指顯示控件內(nèi)容的區(qū)域,可以是文本、圖像或其他控件元素。內(nèi)容:指顯示控件內(nèi)容的區(qū)域,可以是文本、圖像或其他控件元素。Padding:內(nèi)邊距。即邊框和內(nèi)容之間的矩形環(huán)區(qū)域。:內(nèi)邊距。即邊框和內(nèi)容之間的矩形環(huán)區(qū)域。邊框:即內(nèi)邊距和外邊距之間

5、的黑色矩形環(huán)區(qū)域。邊框:即內(nèi)邊距和外邊距之間的黑色矩形環(huán)區(qū)域。Margin:外邊距。指邊框和圖中虛線包圍的矩形環(huán)區(qū)域,表示該控件和其他:外邊距。指邊框和圖中虛線包圍的矩形環(huán)區(qū)域,表示該控件和其他控件之間的距離??丶g的距離。58.1 控件模型和內(nèi)容模型控件模型和內(nèi)容模型lWPF控件模型控件模型外邊距(外邊距(Margin) 在在XAML中,一般用特性語法來描述中,一般用特性語法來描述Margin屬性。常用有兩種形式,一種是用一屬性。常用有兩種形式,一種是用一個值來描述,例如下面的代碼表示按鈕周邊四個方向的外邊距都是個值來描述,例如下面的代碼表示按鈕周邊四個方向的外邊距都是10。XAMLXAM

6、L:按鈕按鈕11C#C#:Button1.Margin = new Thickness(10);Button1.Margin = new Thickness(10);另一種是按照另一種是按照“左、上、右、下左、上、右、下”的順序,用的順序,用4個值分別描述四個方向的外邊距。個值分別描述四個方向的外邊距。例如下面的代碼表示例如下面的代碼表示Button2按鈕的左、上、右、下的外邊距分別是按鈕的左、上、右、下的外邊距分別是0、10、0、10XAMLXAML:按鈕按鈕22C#C#:Button2.Margin = new Thickness(0, 10, 0, 10);Button2.Margin

7、= new Thickness(0, 10, 0, 10);68.1 控件模型和內(nèi)容模型控件模型和內(nèi)容模型lWPF控件模型控件模型內(nèi)邊距(內(nèi)邊距(Padding) Padding屬性用于控制元素內(nèi)部與其子元素或文本之間的間距,其用法和屬性用于控制元素內(nèi)部與其子元素或文本之間的間距,其用法和Margin屬性的用法相似。屬性的用法相似。 【例例8-1】演示控件模型中外邊距、內(nèi)邊距以及邊框的含義及用法。演示控件模型中外邊距、內(nèi)邊距以及邊框的含義及用法。 78.1 控件模型和內(nèi)容模型控件模型和內(nèi)容模型lWPF控件模型控件模型水平對齊(水平對齊(HorizontalAlignment) Horizont

8、alAlignment屬性聲明元素相對于其父元素的水平對齊方式屬性聲明元素相對于其父元素的水平對齊方式 。 【例例8-2】演示如何將演示如何將HorizontalAlignment屬性應用于屬性應用于Button元素。元素。 成 員說 明Left、Center、Right子元素在其父元素內(nèi)左端對齊、中心對齊、右端對齊Stretch(默認)拉伸子元素至父元素的已分配空間。如果聲明了Width和Height,則Width和Height優(yōu)先88.1 控件模型和內(nèi)容模型控件模型和內(nèi)容模型lWPF控件模型控件模型垂直對齊(垂直對齊(VerticalAlignment) VerticalAlignment

9、屬性描述元素相對于其父元素的垂直對齊方式??赡艿娜≈捣謱傩悦枋鲈叵鄬τ谄涓冈氐拇怪睂R方式??赡艿娜≈捣謩e為別為Top(頂端對齊)、(頂端對齊)、Center(中心對齊)、(中心對齊)、Bottom(底端對齊)和(底端對齊)和Stretch(默認,垂直拉伸)。(默認,垂直拉伸)。 【例例8-3】演示了如何將演示了如何將VerticalAlignment屬性應用于屬性應用于Button元素。元素。 98.1 控件模型和內(nèi)容模型控件模型和內(nèi)容模型lWPF內(nèi)容模型內(nèi)容模型 WPF內(nèi)容模型是指如何組織和布局內(nèi)容模型是指如何組織和布局WPF控件的內(nèi)容。用控件的內(nèi)容。用XAML描述控件元素時,一描述控

10、件元素時,一般語法形式為般語法形式為 內(nèi)容模型內(nèi)容模型/ TextText內(nèi)容模型表示一段字符串。內(nèi)容模型表示一段字符串。TextBox、PasswordBox都屬于都屬于Text內(nèi)容模型。內(nèi)容模型。XamlXaml: 這是一段文本這是一段文本 C#C#: textBox1.Text=textBox1.Text=這是一段文本這是一段文本“;“;108.1 控件模型和內(nèi)容模型控件模型和內(nèi)容模型lWPF內(nèi)容模型內(nèi)容模型 Content Content內(nèi)容模型表示該內(nèi)容是一個對象,該對象可以是文本、圖像及其他元素。內(nèi)容模型表示該內(nèi)容是一個對象,該對象可以是文本、圖像及其他元素。像像Button、Re

11、peatButton、CheckBox、RadioButton及及Image都屬于該模型。都屬于該模型。XamlXaml: Button Name=button1 Content=/ HeaderedContent HeaderedContent表示其內(nèi)容模型為表示其內(nèi)容模型為1個標題和個標題和1個內(nèi)容項,二者都是任意對象。個內(nèi)容項,二者都是任意對象。 TabItem是一個特殊類型的內(nèi)容控件,利用它可設置內(nèi)容和標題。是一個特殊類型的內(nèi)容控件,利用它可設置內(nèi)容和標題。 118.1 控件模型和內(nèi)容模型控件模型和內(nèi)容模型lWPF內(nèi)容模型內(nèi)容模型 Items Items表示一個項集合??梢酝ㄟ^設置控件

12、的表示一個項集合??梢酝ㄟ^設置控件的Items屬性來直接填充該控件的每一屬性來直接填充該控件的每一項。項。HeaderedItems 該內(nèi)容模型表示一個標題和一個項集合。該內(nèi)容模型表示一個標題和一個項集合。 Children 該內(nèi)容模型表示一個或多個子元素。該內(nèi)容模型表示一個或多個子元素。 128.1 控件模型和內(nèi)容模型控件模型和內(nèi)容模型lWPF應用程序中創(chuàng)建控件對象的方式應用程序中創(chuàng)建控件對象的方式 在在WPF應用程序中,有兩種創(chuàng)建控件對象的方式。應用程序中,有兩種創(chuàng)建控件對象的方式。(1)如果設計前已經(jīng)知道由哪些元素來組成界面,比如靜態(tài)不)如果設計前已經(jīng)知道由哪些元素來組成界面,比如靜態(tài)不

13、變的界面,則一般用變的界面,則一般用XAML來實現(xiàn),這種方式的優(yōu)點是可直觀地來實現(xiàn),這種方式的優(yōu)點是可直觀地看到界面的效果,缺點是無法動態(tài)改變元素個數(shù)??吹浇缑娴男Ч?,缺點是無法動態(tài)改變元素個數(shù)。(2)如果元素的個數(shù)由其他因素決定,比如游戲、動態(tài)顯示的)如果元素的個數(shù)由其他因素決定,比如游戲、動態(tài)顯示的復雜界面,則一般用復雜界面,則一般用C#代碼來實現(xiàn),這種方式的優(yōu)點是靈活,缺代碼來實現(xiàn),這種方式的優(yōu)點是靈活,缺點是只能在運行時才能看到設計的效果。點是只能在運行時才能看到設計的效果。 13Ch8 WPF控件控件8.1 控件模型和內(nèi)容模型控件模型和內(nèi)容模型 8.2 常用布局控件常用布局控件 8.

14、3 常用基本控件常用基本控件8.4 菜單、工具條和狀態(tài)條菜單、工具條和狀態(tài)條8.5 圖像和圖像和GIF動畫動畫8.6 其他其他WPF控件控件148.2 常用布局控件常用布局控件lWPF的布局分類的布局分類 絕對定位布局絕對定位布局 絕對定位布局是指子元素使用相對于布局元素左上角(絕對定位布局是指子元素使用相對于布局元素左上角(0,0)的坐標()的坐標(x、y)來描述。在這種布局模式下,當調(diào)整布局元素的大?。ǎ﹣砻枋?。在這種布局模式下,當調(diào)整布局元素的大?。╓idth、Height)時,子元素的坐標位置不會發(fā)生變化,所以稱為絕對定位布局。)時,子元素的坐標位置不會發(fā)生變化,所以稱為絕對定位布局。

15、 動態(tài)定位布局動態(tài)定位布局動態(tài)定位布局是指布局元素內(nèi)的子元素位置以及排列順序隨著頁面或窗口動態(tài)定位布局是指布局元素內(nèi)的子元素位置以及排列順序隨著頁面或窗口的大小變化動態(tài)調(diào)整。在的大小變化動態(tài)調(diào)整。在WPF中,除了中,除了Canvas布局元素內(nèi)的子元素采用布局元素內(nèi)的子元素采用絕對布局外,其他布局元素內(nèi)的元素都是采用動態(tài)布局。絕對布局外,其他布局元素內(nèi)的元素都是采用動態(tài)布局。 158.2 常用布局控件常用布局控件lWPF的布局分類的布局分類 動態(tài)定位布局動態(tài)定位布局WPF應用程序中的所有元素周圍都圍繞著一個邊界框,當布局系統(tǒng)定位元應用程序中的所有元素周圍都圍繞著一個邊界框,當布局系統(tǒng)定位元素時,

16、實際上是在定位包含該元素的矩形邊界框或布局槽。由下圖可知父素時,實際上是在定位包含該元素的矩形邊界框或布局槽。由下圖可知父面板內(nèi)的某個子元素分配的區(qū)域?qū)嶋H上遠遠大于該子元素,每個子元素的面板內(nèi)的某個子元素分配的區(qū)域?qū)嶋H上遠遠大于該子元素,每個子元素的布局槽大小實際上是由其父容器來決定的布局槽大小實際上是由其父容器來決定的 168.2 常用布局控件常用布局控件lWPF的布局分類的布局分類 動態(tài)定位布局動態(tài)定位布局如果子元素進行旋轉后超出了分配給它的布局槽,如果布局槽的大小不變,如果子元素進行旋轉后超出了分配給它的布局槽,如果布局槽的大小不變,布局系統(tǒng)將僅顯示布局槽內(nèi)的部分,而布局槽外的部分將被自

17、動裁剪掉,布局系統(tǒng)將僅顯示布局槽內(nèi)的部分,而布局槽外的部分將被自動裁剪掉,為了讓元素旋轉時不被裁剪,在實際開發(fā)中,應該盡量使用動態(tài)布局。為了讓元素旋轉時不被裁剪,在實際開發(fā)中,應該盡量使用動態(tài)布局。 178.2 常用布局控件常用布局控件lWPF的布局分類的布局分類 動態(tài)調(diào)整控件大小時常用的屬性動態(tài)調(diào)整控件大小時常用的屬性 屬 性值適用范圍對動態(tài)調(diào)整大小的說明Width、Heightdouble、Auto、 *窗口、控件將控件放在Grid內(nèi),并使用自動(Auto)和星號(*)調(diào)整網(wǎng)格大小可最大程度地提高靈活性MinWidth、MinHeightdouble窗口、控件設置為0可最大程度地提高靈活性

18、MaxWidth、MaxHeightdouble、Infinity窗口、控件設置為Infinity可最大程度地提高靈活性ResizeModeNoResizeCanMinimizeCanResizeCanResizeWithGrip窗口默認為CanResize(允許用戶調(diào)整窗口的大?。?,這樣可最大程度地提高靈活性SizeToContentManualWidthHeightWidthAndHeight窗口設置為WidthAndHeight(允許窗口內(nèi)的內(nèi)容擴展時自動調(diào)整窗口的大?。┛勺畲蟪潭鹊靥岣哽`活性188.2 常用布局控件常用布局控件l網(wǎng)格網(wǎng)格 (Grid)該控件定義由行和列組成的網(wǎng)格區(qū)域,在

19、網(wǎng)格區(qū)域內(nèi)可以放置其他控件,放置的該控件定義由行和列組成的網(wǎng)格區(qū)域,在網(wǎng)格區(qū)域內(nèi)可以放置其他控件,放置的這些控件都自動作為這些控件都自動作為Grid元素的子元素。是所有動態(tài)布局控件中唯一可按比例動元素的子元素。是所有動態(tài)布局控件中唯一可按比例動態(tài)調(diào)整分配空間的控件。態(tài)調(diào)整分配空間的控件。 Grid內(nèi)的子元素中還可以嵌套內(nèi)的子元素中還可以嵌套Grid。子元素使用以下附加屬性來定位:。子元素使用以下附加屬性來定位:uGrid.RowGrid.Row、Grid.ColumnGrid.Column:指定子元素所在的行和列。在:指定子元素所在的行和列。在C#C#代碼中,使用代碼中,使用Grid.SetR

20、owGrid.SetRow方法和方法和Grid.SetColGrid.SetCol方法指定子元素所在的行和列。方法指定子元素所在的行和列。uGrid.RowSpanGrid.RowSpan:使該子元素跨多行。例如:使該子元素跨多行。例如Grid.RowSpan=2Grid.RowSpan=2表示跨表示跨2 2行。行。uGrid.ColumnSpanGrid.ColumnSpan:使該子元素跨多列。例如:使該子元素跨多列。例如Grid. ColumnSpan =2Grid. ColumnSpan =2表示跨表示跨2 2列。列。 有兩種方式讓有兩種方式讓Grid自動調(diào)整行高和列寬。自動調(diào)整行高和列

21、寬。u在在GridGrid的行定義或列定義的開始標記內(nèi),用的行定義或列定義的開始標記內(nèi),用AutoAuto表示行高或列寬,此時它會自動顯示表示行高或列寬,此時它會自動顯示單元格內(nèi)子元素包含的全部內(nèi)容,即使內(nèi)容改變也是如此。單元格內(nèi)子元素包含的全部內(nèi)容,即使內(nèi)容改變也是如此。u在在GridGrid的行定義或列定義的開始標記內(nèi),用星號(的行定義或列定義的開始標記內(nèi),用星號(n n* *)根據(jù)加權比例分配網(wǎng)格的行和)根據(jù)加權比例分配網(wǎng)格的行和列之間的可用空間。當列之間的可用空間。當n n為為1 1時,可直接用一個星號(時,可直接用一個星號(* *)表示。)表示。198.2 常用布局控件常用布局控件【

22、例例8-4】演示如何用演示如何用Grid構造動態(tài)布局。構造動態(tài)布局。 208.2 常用布局控件常用布局控件l堆疊面板(堆疊面板(StackPanel) StackPanel用于將其子元素按縱向或橫向順序排列或堆疊。沒有重疊的用于將其子元素按縱向或橫向順序排列或堆疊。沒有重疊的時候稱為排列,有重疊的時候稱為堆疊。常用屬性如下。時候稱為排列,有重疊的時候稱為堆疊。常用屬性如下。uOrientationOrientation屬性:排列或堆疊的方向。默認為縱向,如果希望橫向?qū)傩裕号帕谢蚨询B的方向。默認為縱向,如果希望橫向排列或堆疊,將該屬性設置為排列或堆疊,將該屬性設置為“Horizontal”“Ho

23、rizontal”即可。即可。 【例例8-5】演示演示StackPanel的基本用法。的基本用法。 218.2 常用布局控件常用布局控件l畫布(畫布(Canvas) Canvas用于定義一個區(qū)域,稱為畫布。在該畫布內(nèi)的所有子元素都用相用于定義一個區(qū)域,稱為畫布。在該畫布內(nèi)的所有子元素都用相對于該區(qū)域左上角的坐標位置對于該區(qū)域左上角的坐標位置x和和y來定位來定位 ,其常用屬性如下。,其常用屬性如下。uCanvas.LeftCanvas.Left和和Canvas.TopCanvas.Top附加屬性:子元素一般使用附加屬性:子元素一般使用Canvas.LeftCanvas.Left和和Canvas.

24、TopCanvas.Top附加屬性指定其相對于附加屬性指定其相對于CanvasCanvas容器左上角的位置,容器左上角的位置,Canvas.LeftCanvas.Left表示表示x x坐標,坐標,Canvas.TopCanvas.Top表示表示y y坐標。坐標。uCanvas.ZIndexCanvas.ZIndex附加屬性:該附加屬性也叫附加屬性:該附加屬性也叫Z Z順序,即三維空間中沿順序,即三維空間中沿Z Z軸排列軸排列的順序。利用該附加屬性可設置的順序。利用該附加屬性可設置CanvasCanvas內(nèi)子元素重疊的順序,該值可以是內(nèi)子元素重疊的順序,該值可以是正整數(shù),也可以是負整數(shù),默認值為

25、正整數(shù),也可以是負整數(shù),默認值為0 0。ZIndexZIndex值大的元素會蓋住值大的元素會蓋住ZIndexZIndex值值小的元素。小的元素。uClipToBoundsClipToBounds屬性:當繪制內(nèi)容超出屬性:當繪制內(nèi)容超出CanvasCanvas范圍時,范圍時,truetrue表示超出的部分表示超出的部分被自動剪裁掉,被自動剪裁掉,falsefalse表示不剪裁。表示不剪裁。 228.2 常用布局控件常用布局控件【例例8-6】演示演示Canvas的基本用法。的基本用法。 238.2 常用布局控件常用布局控件l畫布(畫布(Canvas) Canvas的優(yōu)點是執(zhí)行效率高,缺點是其子元素

26、無法動態(tài)定位,也無法自的優(yōu)點是執(zhí)行效率高,缺點是其子元素無法動態(tài)定位,也無法自動調(diào)整大小。動調(diào)整大小。對于窗口、頁面或者其中的一部分區(qū)域來說,以下情況應該使用絕對定位對于窗口、頁面或者其中的一部分區(qū)域來說,以下情況應該使用絕對定位布局:布局:u當區(qū)域內(nèi)只有一個圖像或圖形子元素時,應該使用絕對定位布局。當區(qū)域內(nèi)只有一個圖像或圖形子元素時,應該使用絕對定位布局。u當當C#C#代碼中需要使用此區(qū)域內(nèi)的子元素坐標位置時,應該使用絕對代碼中需要使用此區(qū)域內(nèi)的子元素坐標位置時,應該使用絕對定位布局。定位布局。 248.2 常用布局控件常用布局控件l邊框(邊框(Border) Border用于在某個元素周圍

27、繪制邊框,或者為某元素提供背景。用于在某個元素周圍繪制邊框,或者為某元素提供背景。常用屬性如下。常用屬性如下。uCornerRadiusCornerRadius:獲取或設置邊框的圓角半徑。:獲取或設置邊框的圓角半徑。uBorderThicknessBorderThickness:獲取或設置邊框的粗細。常用有兩種表示形式,一種是用一個值:獲取或設置邊框的粗細。常用有兩種表示形式,一種是用一個值表示(如表示(如BorderThickness=5BorderThickness=5),另一種是按左、上、右、下的順序表示(如),另一種是按左、上、右、下的順序表示(如BorderThickness=15,

28、5,15,5BorderThickness=15,5,15,5)。)。uPaddingPadding:獲取或設置:獲取或設置BorderBorder與其包含的子對象之間的距離。與其包含的子對象之間的距離?!纠?-7】演示演示Border的基本用法。的基本用法。 258.2 常用布局控件常用布局控件l??棵姘澹ㄍ?棵姘澹―ockPanel) DockPanel用于定義一個區(qū)域,并使該區(qū)域內(nèi)的子元素在其上、下用于定義一個區(qū)域,并使該區(qū)域內(nèi)的子元素在其上、下、左、右各邊緣按水平或垂直方式依次???。常用屬性如下。、左、右各邊緣按水平或垂直方式依次???。常用屬性如下。uLastChildFillLas

29、tChildFill:該屬性默認為:該屬性默認為truetrue,表示,表示DockPanelDockPanel的最后一個子元素始終填滿剩余的最后一個子元素始終填滿剩余的空間。如果的空間。如果DockPanelDockPanel內(nèi)只有一個子元素,此時由于它同時也是最后一個子元素,內(nèi)只有一個子元素,此時由于它同時也是最后一個子元素,所以默認會填滿所以默認會填滿DockPanelDockPanel空間。如果將該屬性設置為空間。如果將該屬性設置為falsefalse,還必須為最后一個子元,還必須為最后一個子元素顯式指定??糠较?。素顯式指定??糠较颉DockPanel.DockDockPanel.D

30、ock:當:當DockPanelDockPanel內(nèi)有多個子元素時,每個子元素都可以用內(nèi)有多個子元素時,每個子元素都可以用DockPanel.DockDockPanel.Dock附加屬性指定其在父元素中的??糠绞?。附加屬性指定其在父元素中的??糠绞健FocusableFocusable:默認情況下,:默認情況下,DockPanelDockPanel不接收焦點。要強制使不接收焦點。要強制使DockPanelDockPanel接收焦點,可接收焦點,可將該屬性設置為將該屬性設置為truetrue。268.2 常用布局控件常用布局控件【例例8-8】演示演示DockPanel的基本用法。的基本用法。2

31、78.2 常用布局控件常用布局控件l其他常用布局控件其他常用布局控件 BulletDecorator uBulletDecoratorBulletDecorator控件用于將項目符號與其他可視化對象對齊??丶糜趯㈨椖糠柵c其他可視化對象對齊。 Expander Expander控件將其內(nèi)容作為一個可折疊和展開的窗口控件將其內(nèi)容作為一個可折疊和展開的窗口,常用屬性如下。常用屬性如下。uExpandDirectionExpandDirection:折疊窗口的展開方向。注意將該屬性設置為:折疊窗口的展開方向。注意將該屬性設置為DownDown或或UpUp時時,不要指定該控件的,不要指定該控件的He

32、ightHeight。將該屬性設置為。將該屬性設置為LeftLeft或者或者RightRight時,不要指定該時,不要指定該控件的控件的WidthWidth。如果設置展開窗口的大小,應在該控件的內(nèi)容上或在封閉內(nèi)容。如果設置展開窗口的大小,應在該控件的內(nèi)容上或在封閉內(nèi)容的的ScrollViewerScrollViewer上設置大小。上設置大小。uHorizontalContentAlignmentHorizontalContentAlignment和和VerticalContentAlignmentVerticalContentAlignment:設置標題和展:設置標題和展開窗口中內(nèi)容的對齊方式

33、。開窗口中內(nèi)容的對齊方式。288.2 常用布局控件常用布局控件l 其他布局控件用法舉例其他布局控件用法舉例 :298.2 常用布局控件常用布局控件l其他常用布局控件其他常用布局控件 GridSplitter uGridSplitterGridSplitter控件可讓用戶拖動調(diào)整控件可讓用戶拖動調(diào)整GridGrid控件中列或行的大小??丶辛谢蛐械拇笮?。 GroupBox uGroupBoxGroupBox的內(nèi)容模型是的內(nèi)容模型是HeaderedContentHeaderedContent,其,其ContentContent和和HeaderHeader屬性屬性可以是任何類型可以是任何類型 Sep

34、arator u該控件顯示一條水平或垂直的分隔線,一般用于分隔該控件顯示一條水平或垂直的分隔線,一般用于分隔ListBoxListBox、MenuMenu、ToolBarToolBar等控件中的子項,也可以用它分隔界面中顯示的區(qū)域。等控件中的子項,也可以用它分隔界面中顯示的區(qū)域。WrapPanel u該控件按順序排列子元素,當?shù)竭_框的邊緣時,它會自動將內(nèi)容顯該控件按順序排列子元素,當?shù)竭_框的邊緣時,它會自動將內(nèi)容顯示在下一行。示在下一行。 308.2 常用布局控件常用布局控件l其他常用布局控件其他常用布局控件 31Ch8 WPF控件控件8.1 控件模型和內(nèi)容模型控件模型和內(nèi)容模型 8.2 常用

35、布局控件常用布局控件 8.3 常用基本控件常用基本控件8.4 菜單、工具條和狀態(tài)條菜單、工具條和狀態(tài)條8.5 圖像和圖像和GIF動畫動畫8.6 其他其他WPF控件控件328.3 常用基本控件常用基本控件l 按鈕(按鈕(Button、RepeatButton) 按鈕(按鈕(Button)是最基本的控件之一。按鈕上除了顯示一般的文字之外,)是最基本的控件之一。按鈕上除了顯示一般的文字之外,還可以顯示圖像或者同時顯示圖像和文字。還可以顯示圖像或者同時顯示圖像和文字。RepeatButton和和Button類似,但類似,但RepeatButton從按下按鈕到釋放按鈕從按下按鈕到釋放按鈕的時間段內(nèi)會自動

36、重復引發(fā)其的時間段內(nèi)會自動重復引發(fā)其Click事件。利用事件。利用Delay屬性可指定事件的開屬性可指定事件的開始時間,利用始時間,利用Interval屬性可控制重復的間隔時間。屬性可控制重復的間隔時間。 【例例8-9】演示演示Button的基本用法。的基本用法。338.3 常用基本控件常用基本控件l文本塊(文本塊(TextBlock)和標簽()和標簽(Label) TextBlock TextBlock用于用于顯示可格式化表示的只讀文本。顯示可格式化表示的只讀文本??梢杂脙?nèi)置格式可以用內(nèi)置格式(稱為稱為Inline)來控制文本來控制文本塊的不同部分塊的不同部分,分別指定字體系列、樣式、粗細或

37、大小。例如:分別指定字體系列、樣式、粗細或大小。例如: 文本文本11 文本文本22用用Run來實現(xiàn)這種方式的運行效率不高來實現(xiàn)這種方式的運行效率不高 ,上面的代碼可以用下面的方式實現(xiàn),上面的代碼可以用下面的方式實現(xiàn) TextBlock Margin=10 FontFamily=Arial FontSize=20 Text= 1 / TextBlock Margin=10 FontFamily=Courier New 2 /如果如果TextBlock內(nèi)包含超鏈接(內(nèi)包含超鏈接(Hyperlink),此時將多個),此時將多個Hyperlink和和Run包含在包含在一個一個TextBlock內(nèi)比用多

38、個內(nèi)比用多個TextBlock分別實現(xiàn)的效率高。分別實現(xiàn)的效率高。348.3 常用基本控件常用基本控件l文本塊(文本塊(TextBlock)和標簽()和標簽(Label) Label Label的內(nèi)容模型是的內(nèi)容模型是Content,因此它還可以包含其他對象。一般將,因此它還可以包含其他對象。一般將Label與與TextBox一起使用,一起使用,用于顯示描述性信息、驗證信息或輸入指示信息。例如:用于顯示描述性信息、驗證信息或輸入指示信息。例如:XAMLXAML:年齡:年齡:C#C#:Label ageLabel = new Label();Label ageLabel = new Label(

39、);ageLabel.Content = ageLabel.Content = 年齡:年齡:;358.3 常用基本控件常用基本控件l文本框文本框(TextBox、PasswordBox、RichTextBox) TextBoxTextBox控件用于顯示或編輯純文本字符。常用屬性如下??丶糜陲@示或編輯純文本字符。常用屬性如下。uTextText:表示顯示的文本;:表示顯示的文本;uMaxLengthMaxLength:限制用戶輸入的字符數(shù);:限制用戶輸入的字符數(shù);uTextWrappingTextWrapping:控制是否自動轉到下一行,當其值為:控制是否自動轉到下一行,當其值為“Wrap”W

40、rap”時,該控件可自動擴展時,該控件可自動擴展以容納多行文本;以容納多行文本;uBorderBrushBorderBrush:邊框顏色;:邊框顏色;uBorderThicknessBorderThickness:邊框?qū)挾?,如果不希望該控件顯示邊框,將其設置為:邊框?qū)挾?,如果不希望該控件顯示邊框,將其設置為0 0即可。即可。例如:例如:uTextBox Name=ageTextBox MaxLength=5 Width=60 /TextBox控件的常用事件是控件的常用事件是TextChanged事件。事件。368.3 常用基本控件常用基本控件l文本框文本框(TextBox、PasswordBo

41、x、RichTextBox) PasswordBox PasswordBox控件用于密碼輸入,常用屬性如下??丶糜诿艽a輸入,常用屬性如下。uPasswordCharPasswordChar屬性:掩碼,即不論輸入什么字符,顯示的都是用它指定的字符;屬性:掩碼,即不論輸入什么字符,顯示的都是用它指定的字符;uPasswordPassword屬性:輸入的密碼字符串。屬性:輸入的密碼字符串。uPasswordChangedPasswordChanged事件:當密碼字符串改變時發(fā)生。事件:當密碼字符串改變時發(fā)生。除了這兩個屬性之外,其他用法和除了這兩個屬性之外,其他用法和TextBox相同。例如:相同

42、。例如:uPasswordBox Password=abc PasswordChar=RichTextBox RichTextBox用于復雜格式的文本輸入。該控件的內(nèi)容用用于復雜格式的文本輸入。該控件的內(nèi)容用Blocks屬性來設置。屬性來設置。Blocks屬性是包含屬性是包含Paragraph元素的集合。元素的集合。Paragraph元素可以包含如下許多類元素可以包含如下許多類型的元素:型的元素:Inline、InlineUIContainer(可包含(可包含 FrameworkElement 對象,例如對象,例如Image或或Button)、)、Run、Span、Bold、Hyperlink

43、、Italic、Underline等。等。378.3 常用基本控件常用基本控件l文本框文本框(TextBox、PasswordBox、RichTextBox) 注意的問題注意的問題使用使用TextBox、PasswordBox和和RichTextBox時,一定要注意,如果希望檢測文時,一定要注意,如果希望檢測文本是否發(fā)生更改,本是否發(fā)生更改,TextBox和和RichTextBox應該使用應該使用TextChanged事件,事件,PasswordBox應該使用應該使用PasswordChanged事件,絕不能使用事件,絕不能使用KeyDown、MouseDown或者或者MouseUp事件來判斷

44、。事件來判斷。 【例例8-10】演示演示TextBox、PasswodBox的基本用法。的基本用法。 388.3 常用基本控件常用基本控件l單選按鈕(單選按鈕(RadioButton) 單選按鈕一般用于從多個選項中選擇一項。單選按鈕一般用于從多個選項中選擇一項。RadioButton的內(nèi)容模型是一個的內(nèi)容模型是一個ContentControl,即它所包含的對象元素可以是,即它所包含的對象元素可以是任何類型(字符串、圖像或面板等),但只能包含一個對象元素。任何類型(字符串、圖像或面板等),但只能包含一個對象元素。uGroupNameGroupName屬性:分組。將同一組的多個屬性:分組。將同一組

45、的多個RadioButtonRadioButton的該屬性設置為同一個值。用戶的該屬性設置為同一個值。用戶一次只能選擇同一組中的一項,一旦某一項被選中,同組中其他的一次只能選擇同一組中的一項,一旦某一項被選中,同組中其他的RadioButtonRadioButton將自將自動變?yōu)榉沁x中狀態(tài)。動變?yōu)榉沁x中狀態(tài)。uIsCheckedIsChecked屬性:判斷是否選中某個單選按鈕,如果被選中,則為屬性:判斷是否選中某個單選按鈕,如果被選中,則為truetrue,否則為,否則為falsefalse。 【例例8-11】演示演示RadioButton的基本用法的基本用法 。 398.3 常用基本控件常用

46、基本控件l復選框(復選框(CheckBox) 復選框一般用于同時選擇多項或者選擇某一項的不同狀態(tài)。復選框一般用于同時選擇多項或者選擇某一項的不同狀態(tài)。 CheckBox的內(nèi)容模型是一個的內(nèi)容模型是一個ContentControl,即它可以包含任何類型的單個對象(,即它可以包含任何類型的單個對象(例如字符串、圖像、面板等例如字符串、圖像、面板等),常用屬性和事件如下。,常用屬性和事件如下。uContentContent屬性:顯示的文本。屬性:顯示的文本。uIsCheckedIsChecked屬性:屬性:truetrue表示選中,表示選中,falsefalse表示未選中,表示未選中,nonenon

47、e表示不確定。表示不確定。uIsThreeStateIsThreeState屬性:如果支持屬性:如果支持3 3種狀態(tài),則為種狀態(tài),則為truetrue;否則為;否則為falsefalse。默認值為。默認值為falsefalse。如果該屬性為。如果該屬性為truetrue,可將,可將IsCheckedIsChecked屬性設置為屬性設置為nullnull作為第作為第3 3種狀態(tài)。種狀態(tài)。uClickClick事件:單擊復選框時發(fā)生。利用該事件可判斷是三種狀態(tài)中的哪一種。事件:單擊復選框時發(fā)生。利用該事件可判斷是三種狀態(tài)中的哪一種。uCheckedChecked事件:復選框選中時發(fā)生。事件:復選框

48、選中時發(fā)生。uUnCheckedUnChecked事件:復選框未選中時發(fā)生。事件:復選框未選中時發(fā)生。 408.3 常用基本控件常用基本控件【例例8-12】演示復選框的基本用法。演示復選框的基本用法。418.3 常用基本控件常用基本控件l列表框(列表框(ListBox)和下拉框()和下拉框(ComboBox) ListBox用于顯示一組選項,內(nèi)容模型都是用于顯示一組選項,內(nèi)容模型都是Items,每個選項既可以是,每個選項既可以是字符串,也可以是圖像。字符串,也可以是圖像。ComboBox是是TextBox和可彈出的和可彈出的ListBox的組合,它除了比的組合,它除了比ListBox多了一個多

49、了一個TextBox以外,對于每個選項的操作與以外,對于每個選項的操作與ListBox的用法完全相的用法完全相同。這兩個控件的常用屬性、方法和事件如下。同。這兩個控件的常用屬性、方法和事件如下。uCountCount屬性:獲取列表項的個數(shù)。屬性:獲取列表項的個數(shù)。uSelectedIndexSelectedIndex屬性:獲取當前選定項從屬性:獲取當前選定項從0 0開始的索引號,未選擇任何項時開始的索引號,未選擇任何項時該值為該值為1 1。uSelectedItemSelectedItem屬性:獲取當前選定的項,未選擇任何項時該值為屬性:獲取當前選定的項,未選擇任何項時該值為nullnull。

50、uSelectionModeSelectionMode屬性:選擇列表項的方式,有以下取值。屬性:選擇列表項的方式,有以下取值。Single(默認值):每次只能選擇一項。Multiple:每次可選擇多項,單擊對應項選中,再次單擊取消選中。Extended:按下鍵可同時用鼠標選擇多個連續(xù)項,按下鍵可同時用鼠標選擇多個不連續(xù)的項。428.3 常用基本控件常用基本控件l列表框(列表框(ListBox)和下拉框()和下拉框(ComboBox) 這兩個控件的常用屬性、方法和事件如下。這兩個控件的常用屬性、方法和事件如下。uItems.AddItems.Add方法:向方法:向ListBoxListBox的項

51、列表添加項。的項列表添加項。uItems.ClearItems.Clear方法:從集合中移除所有項。方法:從集合中移除所有項。uItems.ContainsItems.Contains方法:確定指定的項是否位于集合內(nèi)。方法:確定指定的項是否位于集合內(nèi)。uItems.RemoveItems.Remove方法:從集合中移除指定的對象。方法:從集合中移除指定的對象。uSelectionChangedSelectionChanged事件:當選擇項發(fā)生改變時引發(fā)此事件。事件:當選擇項發(fā)生改變時引發(fā)此事件。 438.3 常用基本控件常用基本控件l列表框(列表框(ListBox)和下拉框()和下拉框(Com

52、boBox) 一般將一般將ListBox(或者(或者ComboBox)和數(shù)據(jù)綁定一起使用。當將)和數(shù)據(jù)綁定一起使用。當將ListBox(或者(或者ComboBox)綁定到數(shù)據(jù)源時,通常需要獲?。┙壎ǖ綌?shù)據(jù)源時,通常需要獲取ListBoxItem(或者(或者ComboBoxItem)選項,此時可通過)選項,此時可通過ItemContainerGenerator來實現(xiàn)。來實現(xiàn)。例如:例如:uprivate void GetIndex0(object sender, RoutedEventArgs e)private void GetIndex0(object sender, RoutedEvent

53、Args e) ListBoxItem lbi = ListBoxItem lbi = (ListBoxItem)(lb.ItemContainerGenerator.ContainerFromIndex(0);(ListBoxItem)(lb.ItemContainerGenerator.ContainerFromIndex(0); Item.Content = Item.Content = 第第0 0項是項是: + lbi.Content.ToString() + .;: + lbi.Content.ToString() + .; 448.3 常用基本控件常用基本控件【例例8-13】演示列

54、表框和下拉框的基本用法演示列表框和下拉框的基本用法 45Ch8 WPF控件控件8.1 控件模型和內(nèi)容模型控件模型和內(nèi)容模型 8.2 常用布局控件常用布局控件 8.3 常用基本控件常用基本控件8.4 菜單、工具條和狀態(tài)條菜單、工具條和狀態(tài)條8.5 圖像和圖像和GIF動畫動畫8.6 其他其他WPF控件控件468.4 菜單、工具條和狀態(tài)條菜單、工具條和狀態(tài)條l菜單(菜單(Menu)和快捷菜單()和快捷菜單(ContextMenu) Menu控件稱為菜單,用于將關聯(lián)的操作分組或提供上下文幫助,該控控件稱為菜單,用于將關聯(lián)的操作分組或提供上下文幫助,該控件可以顯示在窗口的任何一個位置,但一般顯示在窗口的

55、頂部。件可以顯示在窗口的任何一個位置,但一般顯示在窗口的頂部。ContextMenu控件稱為快捷菜單,也叫右鍵快捷菜單或上下文菜單??丶Q為快捷菜單,也叫右鍵快捷菜單或上下文菜單。該控件除了是右鍵彈出菜單外,其他用法與該控件除了是右鍵彈出菜單外,其他用法與Menu控件的用法相同??丶挠梅ㄏ嗤?。這兩個控件的菜單項都是通過這兩個控件的菜單項都是通過MenuItem來實現(xiàn)的,來實現(xiàn)的,MenuItem內(nèi)還可內(nèi)還可以嵌套以嵌套MenuItem,從而實現(xiàn)多級菜單。,從而實現(xiàn)多級菜單。在在MenuItem中,設置中,設置IsCheckable=true可讓其有勾選的記號(默認可讓其有勾選的記號(默認為為

56、false)。另外,在)。另外,在Header中,可以用中,可以用InputGestureText設置快捷鍵,設置快捷鍵,還可以通過還可以通過Command設置系統(tǒng)命令(剪切、復制、粘貼等)。設置系統(tǒng)命令(剪切、復制、粘貼等)。 478.4 菜單、工具條和狀態(tài)條菜單、工具條和狀態(tài)條【例例8-14】演示菜單和快捷菜單的基本用法演示菜單和快捷菜單的基本用法 488.4 菜單、工具條和狀態(tài)條菜單、工具條和狀態(tài)條l 工具條(工具條(ToolBar、ToolBarTray)和狀態(tài)條()和狀態(tài)條(StatusBar) ToolBar一般顯示在窗口上方,由多個一般顯示在窗口上方,由多個Button、CheckBox、RadioButton、ComboBox等排列組成,通過這些項可以快速地執(zhí)行程序提供的一些常用命令。等排列組成,通過這些項可以快速地執(zhí)行程序提供的一些常用命令。ToolBarTray是是ToolBar的容器,該容器內(nèi)可放置多個的容器,該容器內(nèi)可放置多個ToolBar,并可以用鼠標拖,并可以用鼠標拖動調(diào)整動調(diào)整T

溫馨提示

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

評論

0/150

提交評論