Windows Phone控件詳解及引用外部控件Silverlight Toolkit
在Silverlight中,基本上所有的控件都在System.Windows命名空間里。
控件的繼承結構如下(以Button為例):
原創地址:http://blog.csdn.net/mr_raptor/article/details/7229618
下面我們依次分析繼承關系中的每個層次:
System.Threading.DispatcherObject
所有的Silverlight對象都派生自DispatcherObject。 Silverlight工作在Single Threading Apartment(STA)模型下,DispatcherObject的主要職責就是處理線程的并發和同步。當有消息發生的時候,比如鼠標點擊或者是按 鈕被按下,這些消息將被發送到DispatcherObject,它將負責驗證代碼是否運行在當前線程。
System.Windows.DependencyObject
微軟在設計Silverlight的時候,考慮的是一種基于屬性的架構。換句話說,對象的行為主要是用屬性來表現的,而不是方法,函數和事件。現在,我們只需要記住它的定義就可以了。在后面的章節中,我們將有專門的問題來論述這個主題。
System.Windows.Media.Visual
Visual是一個顯示支持類,用于抽象所有關于繪制顯示的描述。它是一個抽象類,每個Framework Element對象都必須繼承該類。該類的主要作用是為Silverlight提供呈現支持,主要包括輸出顯示,透明度,坐標轉換,區域剪切等。另 外,Visual類同時是非托管的MilCore.dll和托管的Silverlight類之間的橋梁。如果一個類從Visual派生,它就可以在窗口中 顯示出來。這樣,當你想創建你自定義的用戶界面時,你就可以使用Visual對象。
System.Windows.UIElement
UIElement類主要處理三個方面的內容:布局,輸入和事件。該類繼承自Visual類,其中定義了很多與輸入和焦點有關的特性,例如鍵盤事件,鼠標和筆輸入等。同時,該類還包括一些與Silverlight事件模型有關的API。
System.Windows.FrameworkElement
FrameworkElement派生自UIElement,在UIElement的基礎上,它添加了很多其他功能,比如水平對齊,豎直對齊,邊距,邏輯樹、對象生命周期事件、支持數據綁定和動態資源引用、支持樣式和動畫等等。
System.Windows.Shapes.Shape
這個類可以用于創建基本的圖形,比如長方形,多邊形,橢圓,線和路徑等。
System.Windows.Controls.Control
這個類提供一些基本的界面控件,比如文本框。按鈕,列表框等。另外,它還添加了一些擴展屬性,比如字體,前景色和背景色等。
System.Windows.Controls.ContentControl
ContentControl用于顯示多行文本。表示包含單項內容的控件。像 Button、CheckBox 和 ScrollViewer 這樣的控件直接或間接繼承自該類。
System.Windows.Controls.ItemsControl
這是所有能夠支持多個條目顯示的控件的基類,例如列表框和樹形視圖。一般而言,ItemsControl 具有兩個角色:可用于呈現一個固定的項集,或者用于顯示從指向某個對象的數據綁定中獲取的列表。如果要顯示對象源中的數據,則應將 ItemsSource 指定為對某個對象的引用,例如使用ListBox綁定數據源到ItemsSource上。
System.Windows.Controls.Panel
面板(Panel)可以用做所有布局的容器。它可以包含一個或多個子控件并且可以將他們按照布局單位進行排列。這些容器是Silverlight布局系統的基礎,并且合理地使用容器是對你的界面內容進行靈活布局的關鍵。
原創地址:http://blog.csdn.net/mr_raptor/article/details/7229618
Silverlight控件按功能分,包含:
- 用戶交互控件:
Button, CheckBox, Image, TextBlock, TextBox等
- 容器控件:
Border,Canvas,Grid, StackPanel, Viewbox, ScrollViewer等
原創地址:http://blog.csdn.net/mr_raptor/article/details/7229618
容器控件名 |
作用 |
Canvas |
定義一個區域,在該區域中可以使用相對于該區域的坐標顯式定位子元素。一個畫布可包含一個或多個 UIElement 對象。 |
Grid |
定義由列和行組成的網格區域。 |
StackPanel |
將子元素排列成一行(可沿水平或垂直方向)。 |
Border |
在另一個對象的周圍繪制邊框、背景或同時繪制二者。 |
ScrollViewer |
表示可包含其他可見元素的可滾動區域。 |
原創地址:http://blog.csdn.net/mr_raptor/article/details/7229618
用戶交互控件名 |
主要作用 |
Button |
提供一個單擊事件以響應來自鼠標、鍵盤、觸筆或其他輸入設備的用戶輸入。 |
CheckBox |
使用戶能夠選擇(選中)或清除(取消選中)某個選項。CheckBox 可以具有三種狀態:選中、取消選中和不確定。使用 CheckBox 可以為用戶提供一個選項(例如"真/假"或"是/否"),也可以使用戶從選項列表中進行選擇。CheckBox 是一個 ContentControl。 |
HyperlinkButton |
表示顯示超鏈接的按鈕控件。單擊 HyperlinkButton 后,用戶可以導航到同一 Silverlight 應用程序內的外部網頁或內容。 |
Map |
表示默認地圖類。 |
Image |
顯示 PNG 或 JPEG 格式的圖像。Image 控件可顯示具有 1 位、4 位或 8 位顏色深度的索引圖像,或者具有 24 位或 32 位顏色深度的真彩色圖像。 |
ListBox |
包含一個項集合。可通過將該控件綁定到數據源或通過顯示未綁定的項來填充該控件。列表框是一個項控件,這意味著您可以使用包含文本或其他控件的項來填充它。 |
MediaElement |
承載音頻或視頻內容。MediaElement 控件提供了一個可在其圖面上顯示視頻(如果不存在視頻,則播放音頻)的矩形區域。 |
PasswordBox |
用于在單行和不換行的文本區域中輸入敏感或私有信息。您無法查看實際文本,而只能查看表示內容的字符。 |
RadioButton |
使用戶可以從一組選項中選擇一個選項。可以通過將 RadioButton 控件放到父控件內或者將每個 RadioButton 的 GroupName 屬性設置為特定的組來對 RadioButton 進行分組。分組后,各個 RadioButton 控件之間是互斥的。 |
ScrollViewer |
封裝一段內容,并提供最多兩個 ScrollBar 控件來滾動內容視區。ScrollViewer 控件使您能夠設置視區相對于內容的大小,以及設置是否顯示水平和垂直 ScrollBar 控件。 |
Slider |
使用戶可以沿著一條軌道移動 Thumb 控件以從一個值范圍中進行選擇。 |
TextBlock |
顯示少量文本內容。可以使用 Text 屬性來設置 TextBlock 的內容。或者,也可以將 Inlines 屬性設置為一個 Inline 對象集合,例如 Run 或 LineBreak 對象。 |
TextBox |
用于獲取用戶輸入,也可用于顯示文本。文本框控件通常用于可編輯文本,但也可以設置為只讀。文本框可以顯示多個行,并且可以根據控件的大小自動換行。 |
WebBrowser |
當應用程序在瀏覽器外承載時為顯示 HTML 內容提供圖面。 |
上表的控件是WindowsPhone中Toolbox中顯示出來的可用控件,很明顯這些控件不能充分滿足開發者的需要,微軟之所以這么做,無非也 是想減少WP7應用程序的大小,從而不將一些非常用控件引入起來。如果想使用自定義控件或者Silverlight控件,則要在工程里添加程序集引用,然 后在XAML根元素里引入命名空間,才可以使用外部控件。例如:下載并安裝Silverlight Toolkit的擴展控件:http://silverlight.codeplex.com/
1. 在工程里添加引用。
原創地址:http://blog.csdn.net/mr_raptor/article/details/7229618
2. 將安裝的Toolkit程序集加載到工程中,路徑為:C:\Program Files\Microsoft SDKs\Windows Phone\v7.1\Toolkit\Oct11\Bin
原創地址:http://blog.csdn.net/mr_raptor/article/details/7229618
3. 使用外部控件
原創地址:http://blog.csdn.net/mr_raptor/article/details/7229618
- 從解決方案瀏覽器里可以看到Microsoft.Phone.Controls.Toolkit程序集已經加入到了工程里(如圖中1所示)。
- 在XAML的根元素里引用其命名空間(如圖中2所示)。
- 添加控件元素代碼(如圖中3所示)。
- 可以看到頁面上已經顯示出對應的控件。