国产成人精品三级麻豆,色综合天天综合高清网,亚洲精品夜夜夜,国产成人综合在线女婷五月99播放,色婷婷色综合激情国产日韩

當(dāng)前位置:首頁(yè) > 嵌入式培訓(xùn) > 嵌入式學(xué)習(xí) > 講師博文 > WindowsPhone自定義控件詳解(一) - 控件類庫(kù)分析

WindowsPhone自定義控件詳解(一) - 控件類庫(kù)分析 時(shí)間:2014-11-27      來(lái)源:未知

為了讓你的應(yīng)用程序更有個(gè)性,我們通常會(huì)在WP7開(kāi)發(fā)過(guò)程中會(huì)自定義自己風(fēng)格的控件,自定義控件中設(shè)置各種模板,綁定數(shù)據(jù),修改控件行為,但是對(duì)于很多朋友來(lái)說(shuō),這么做是為什么? 不是很清楚,看MSDN的話,又一時(shí)找不到頭緒,本文就是從控件類庫(kù)的繼承關(guān)系里來(lái)剖析出自定義控件中的為什么?如果你覺(jué)得本文觀點(diǎn)獨(dú)特,對(duì)你有很大幫助,請(qǐng)頂之,謝謝。

一、 控件分類

讓我們先從我們熟悉的控件分類開(kāi)始,因?yàn)檫@樣理解更直觀。

WP7里基本控件可以分為以下四類:

1.文本控件:主要用于顯示和輸入文本

2.內(nèi)容控件:主要用于包含一個(gè)子控件元素UIElement(UIElement是所有可視UI控件的基類,我叫它第三代控件祖宗)

3.項(xiàng)集合控件:從名字可以知道,它是包含有多個(gè)子項(xiàng)的控件,如ListBox

4.容器控件:它可以包含有多個(gè)子控件元素(UIElement)

如下表所示,常用基本控件。

控件 控件類型 內(nèi)容屬性
TextBlock 文本控件 TextBlock.Text
  TextBlock.Inlines
TextBox 文本控件 TextBox.Text
PasswordBox 文本控件 PasswordBox.Password
Button 內(nèi)容控件 ContentControl.Content
CheckBox 內(nèi)容控件 ContentControl.Content
RadioButton 內(nèi)容控件 ContentControl.Content
ListBoxItem 內(nèi)容控件 ContentControl.Content
ListBox 項(xiàng)集合控件 ItemsControl.Items
  ItemsControl.ItemsSource
Canvas 容器控件 Panel.Children
Grid 容器控件 Panel.Children
StackPanel 容器控件 Panel.Children

二、主要控件基類

System.Windows.Controls命名空間下,包含以下幾個(gè)主要的控件基類:
  ? Control
  ? ContentControl
  ? ItemsControl
  ? Panel

1. Control:表示用戶界面控件的基類

主要屬性:

? Control.Template 屬性:

通過(guò)將ControlTemplate應(yīng)用給Control.Template 屬性來(lái)定義其外觀。所有繼承自Control類的子類,都繼承Template屬性,也就意味著,你可以通過(guò)自定義ControlTemplate來(lái)實(shí)現(xiàn)Control子控件的自定義。 注意:它有一個(gè)子類UserControl,用于快速創(chuàng)建控件,不過(guò),你不能自定義ControlTemplate,并將它應(yīng)用于UserControl。

主要事件:

? GotFocus,LostFocus 
當(dāng)控件獲得或失去焦點(diǎn)時(shí)回調(diào)

MouseLeftButtonUp ,MouseMove ,MouseLeftButtonDown
當(dāng)控件被點(diǎn)擊,移動(dòng)時(shí)分別回調(diào)

ManipulationStarted ,ManipulationDelta, ManipulationCompleted
當(dāng)用戶對(duì)控件開(kāi)始進(jìn)行操作時(shí)回調(diào)ManipulationStarted,當(dāng)用戶對(duì)控件操作并更改位置時(shí)回調(diào)ManipulationDelta,當(dāng)用戶對(duì)控件停止操作時(shí),回調(diào)ManipulationCompleted。

SizeChanged

當(dāng)代表控件大小的ActualHeight 或 ActualWidth屬性改變時(shí)回調(diào)

2. ContentControl:是其他內(nèi)容控件的基類,表示包含單項(xiàng)元素的內(nèi)容控件。像 Button、CheckBox 和 ScrollViewer 這樣的控件直接或間接繼承自該類。

主要屬性:

? ContentControl. Content 屬性:

ContentControl.Content 屬性可以是任何類型的對(duì)象,例如字符串、UIElement 或 DateTime。當(dāng)ContentControl.Content 設(shè)置為 UIElement 時(shí),ContentControl 中將顯示 UIElement。當(dāng)ContentControl.Content 設(shè)置為其他類型的對(duì)象時(shí),ContentControl 中將顯示該對(duì)象的字符串表示形式。

注意:ContentControl 具有有限的默認(rèn)樣式。如果要增強(qiáng)該控件的外觀,可以創(chuàng)建新的 DataTemplate類型屬性用于自定義。

ContentControl. ContentTemplate屬性:

它是一個(gè)DataTemplate對(duì)象元素,定義該ContentControl的內(nèi)容顯示外觀。

3. ItemsControl:是項(xiàng)集合類的基類。

主要屬性:

? Items屬性:

如果要顯示固定列表,則應(yīng)當(dāng)用一個(gè)或多個(gè) FrameworkElement 子對(duì)象填充ItemsControl .Items屬性,并且不要指定ItemsSource。

? ItemsSource屬性:

如果要顯示對(duì)象數(shù)據(jù)源中的數(shù)據(jù),則應(yīng)將ItemsSource指定為對(duì)某個(gè)對(duì)象的引用。 通常,這可通過(guò) Binding 聲明來(lái)實(shí)現(xiàn),

? ItemsPanel屬性:

設(shè)置該屬性來(lái)自定義項(xiàng)集合控件的布局方式,是一個(gè)ItemsPanelTemplate類型元素。

? ItemTemplate屬性:

設(shè)置該屬性來(lái)指定項(xiàng)集合控件中,每一個(gè)Item項(xiàng)的數(shù)據(jù)顯示外觀,是一個(gè)DataTemplate類型元素。

4. Panel: 是容器控件的基類,比如:Canvas, Grid, StackPanel。

自定義布局行為可以通過(guò)以下方式來(lái)實(shí)現(xiàn):從 Panel 繼承并使用 MeasureOverride 和 ArrangeOverride 方法重寫默認(rèn)度量和排列行為。

上面解釋的基類中的主要屬性和方法是我們?cè)谧远x控件時(shí)去修改的東西,通過(guò)中間的繼承關(guān)系圖可以看得出,Panel類與Control類沒(méi)有任何繼承關(guān)系,這也就從祖宗這輩上決定了其孩子的特性不一樣,所以在對(duì)兩個(gè)大分支類進(jìn)行自定義時(shí)不一樣,Panel類主要是包含其它控件的容器控件,對(duì)容器控件的主要自定義就是設(shè)置不同的被包含控件之間的布局,因此重載其兩個(gè)測(cè)量方法。而Contorl類是用戶交互類,有外觀,有交互操作,對(duì)其子類主要是自定義其外觀和操作,也就是說(shuō),通過(guò)設(shè)置其Template屬性和重載具體的事件來(lái)達(dá)到目的。

? ContentControl類是Control類的子類,它有Control的特點(diǎn),不過(guò),它是內(nèi)容控件,主要用來(lái)包含一個(gè)UIElement。

? 既然包含一個(gè)UIElement,就要設(shè)置這個(gè)UIElement的內(nèi)容,即:Content屬性。

? 通過(guò)ContentTempalte來(lái)定義這個(gè)被包含的UIElement的外觀,因此,如果要自定義外觀那就是重新創(chuàng)建新的DataTempalte,應(yīng)用到ContentTempalte屬性嘍。

? ItemsControl類是Control類的子類,同樣繼承了該繼承的東西,它是個(gè)項(xiàng)集合類,可以包含多個(gè)子項(xiàng)Item。

? 它有Items屬性和ItemsSource讓用戶來(lái)指定包含哪些子項(xiàng)。

? 各子項(xiàng)之間要怎樣布局,就有了ItemtPanel屬性用來(lái)讓用戶指定。

? 每一個(gè)子項(xiàng)是一個(gè)內(nèi)容控件,它具有ContentControl的特點(diǎn),因此還要通過(guò)ItemTempalte屬性指定每一個(gè)項(xiàng)的外觀。

上一篇:進(jìn)程與線程的空間問(wèn)題

下一篇:字符設(shè)備驅(qū)動(dòng)框架搭建流程

熱點(diǎn)文章推薦
華清學(xué)員就業(yè)榜單
高薪學(xué)員經(jīng)驗(yàn)分享
熱點(diǎn)新聞推薦
前臺(tái)專線:010-82525158 企業(yè)培訓(xùn)洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠(yuǎn)見(jiàn)科技集團(tuán)有限公司 版權(quán)所有 ,京ICP備16055225號(hào)-5,京公海網(wǎng)安備11010802025203號(hào)

回到頂部