日韩在线免费播放-日韩在线免费av-日韩在线免费-日韩在线毛片-国产高清不卡视频-国产高清不卡

當前位置:首頁 > 嵌入式培訓 > 嵌入式學習 > 講師博文 > WindowsPhone自定義控件詳解(一) - 控件類庫分析

WindowsPhone自定義控件詳解(一) - 控件類庫分析 時間:2014-11-27      來源:未知

為了讓你的應用程序更有個性,我們通常會在WP7開發過程中會自定義自己風格的控件,自定義控件中設置各種模板,綁定數據,修改控件行為,但是對于很多朋友來說,這么做是為什么? 不是很清楚,看MSDN的話,又一時找不到頭緒,本文就是從控件類庫的繼承關系里來剖析出自定義控件中的為什么?如果你覺得本文觀點獨特,對你有很大幫助,請頂之,謝謝。

一、 控件分類

讓我們先從我們熟悉的控件分類開始,因為這樣理解更直觀。

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

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

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

3.項集合控件:從名字可以知道,它是包含有多個子項的控件,如ListBox

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

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

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

二、主要控件基類

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

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

主要屬性:

? Control.Template 屬性:

通過將ControlTemplate應用給Control.Template 屬性來定義其外觀。所有繼承自Control類的子類,都繼承Template屬性,也就意味著,你可以通過自定義ControlTemplate來實現Control子控件的自定義。 注意:它有一個子類UserControl,用于快速創建控件,不過,你不能自定義ControlTemplate,并將它應用于UserControl。

主要事件:

? GotFocus,LostFocus 
當控件獲得或失去焦點時回調

MouseLeftButtonUp ,MouseMove ,MouseLeftButtonDown
當控件被點擊,移動時分別回調

ManipulationStarted ,ManipulationDelta, ManipulationCompleted
當用戶對控件開始進行操作時回調ManipulationStarted,當用戶對控件操作并更改位置時回調ManipulationDelta,當用戶對控件停止操作時,回調ManipulationCompleted。

SizeChanged

當代表控件大小的ActualHeight 或 ActualWidth屬性改變時回調

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

主要屬性:

? ContentControl. Content 屬性:

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

注意:ContentControl 具有有限的默認樣式。如果要增強該控件的外觀,可以創建新的 DataTemplate類型屬性用于自定義。

ContentControl. ContentTemplate屬性:

它是一個DataTemplate對象元素,定義該ContentControl的內容顯示外觀。

3. ItemsControl:是項集合類的基類。

主要屬性:

? Items屬性:

如果要顯示固定列表,則應當用一個或多個 FrameworkElement 子對象填充ItemsControl .Items屬性,并且不要指定ItemsSource。

? ItemsSource屬性:

如果要顯示對象數據源中的數據,則應將ItemsSource指定為對某個對象的引用。 通常,這可通過 Binding 聲明來實現,

? ItemsPanel屬性:

設置該屬性來自定義項集合控件的布局方式,是一個ItemsPanelTemplate類型元素。

? ItemTemplate屬性:

設置該屬性來指定項集合控件中,每一個Item項的數據顯示外觀,是一個DataTemplate類型元素。

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

自定義布局行為可以通過以下方式來實現:從 Panel 繼承并使用 MeasureOverride 和 ArrangeOverride 方法重寫默認度量和排列行為。

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

? ContentControl類是Control類的子類,它有Control的特點,不過,它是內容控件,主要用來包含一個UIElement。

? 既然包含一個UIElement,就要設置這個UIElement的內容,即:Content屬性。

? 通過ContentTempalte來定義這個被包含的UIElement的外觀,因此,如果要自定義外觀那就是重新創建新的DataTempalte,應用到ContentTempalte屬性嘍。

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

? 它有Items屬性和ItemsSource讓用戶來指定包含哪些子項。

? 各子項之間要怎樣布局,就有了ItemtPanel屬性用來讓用戶指定。

? 每一個子項是一個內容控件,它具有ContentControl的特點,因此還要通過ItemTempalte屬性指定每一個項的外觀。

上一篇:進程與線程的空間問題

下一篇:字符設備驅動框架搭建流程

熱點文章推薦
華清學員就業榜單
高薪學員經驗分享
熱點新聞推薦
前臺專線:010-82525158 企業培訓洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠見科技集團有限公司 版權所有 ,京ICP備16055225號-5京公海網安備11010802025203號

回到頂部

主站蜘蛛池模板: 外国小哥街头索吻狂魔| 张俪eyely| 周末父母42集剧情介绍| 南来北往电视剧40集免费观看| 亚洲狠狠爱| 飞扬的青春 电视剧| 美女写真视频高清福利| 2024年血糖标准| xiuren秀人网| 刘洪杰| 韩义生| 最爱的人是你韩剧免费观看| 亲吻姐姐ova| 楼下的租客| 玫瑰的故事剧情简介| 道东道西| 嘉兴19| 黑木美纱| 秦时明月动画片| 金珉奎怎么读| 怡红院成人影院| angelina全集在线观看| 好妻子全集免费完整版电视剧在线观看| 河北美术学院教务系统| 情侣网站视频| 一张图看懂军衔| 蔡宜达的老婆吴佩柔照片| 蜗居电视剧完整版免费观看高清| 带圈圈的序号1到30| 海南岛全景图| 男和男性猛交ⅹxxx双龙视频| 安多卫视直播在线观看| 《牵牛花》阅读答案| 生活秀| 林莉娴| 七年级下册语文第八课生字拼音 | 26uuu电影网| 我家来了个怪男人| 女同视频网站| 湖北特产| 八月照相馆|