WPF自定義控制項(一) 控制項分類

2021-09-07 20:27:07 字數 2605 閱讀 7282

原文:

wpf自定義控制項(一)の控制項分類

一、什麼是控制項(controls)

控制項是指對資料和方法的封裝。控制項可以有自己的屬性和方法,其中屬性是控制項資料的簡單訪問者,方法則是控制項的一些簡單而可見的功能、控制項建立過程包括設計、開發、除錯(就是所謂的3ds開發流程,即design、develop、debug)工作, 然後是控制項的使用。開發者應該掌握的三項主要內容是:屬性、事件和方法。       

所有的wpf控制項都是繼承自control,根據用途上可以分為四種:內容控制項(content controls)、條目控制項(items controls)、文字控制項(text controls)、範圍控制項(range controls)。

根據建立方式不不同,可以分為常用控制項(一般指原生)、擴充套件控制項(繼承於原有控制項,進行功能擴充套件,例如textbox新增水印文字)、自定義控制項(原來沒有,根據功能創造乙個控制項,繼承於control或上面提到的四種)、使用者控制項(對基礎控制項--前面提到的功能單一的控制項進行組合,形成乙個具有封裝性的功能集合)。

下面將對各種控制項進行介紹。

二、控制項型別介紹(根據用圖)

1、內容控制項

內容控制項的最大的特徵就是有乙個content屬性,從前面的文章中,我們多多少少也知道content接收的是乙個object型別,或許我們會立即想到莫非button就是乙個內容控制項,確實,button算是乙個內容控制項,凡是內容控制項都繼承自contentcontrol,因為content屬性就是屬於contentcontrol。下面是button的類圖。

button是繼承自buttonbase的,button有個很有趣的地方就是buttonbase中存在乙個clickmode屬性,觸發方式在clickmode中以列舉的方式展現,hover,press和release,預設也就是press。

repeatbutton,在wpf中也是乙個新增的控制項,那麼它的用途是什麼呢?很簡單,我們在看video的時候都有「快進」,「快退」,***,首先我們看下repeatbutton中的定義,我們發現有乙個delay:作用就是按下時第一次觸發click的時間延遲,interval:每次click發生的時間間隔,如果大家玩轉了timer控制項都應該很清楚。

togglebutton是checkbox和radiobutton的基類,而且還存在isthreestate屬性,實際上我們最終的ui呈現的要麼是checkbox,要麼是radiobutton,要使第三種狀態有效,我們只需要設定isthreestate屬性和indeterminate事件即可。

2、條目控制項

條目控制項首先都是繼承自itemscontrol,在itemscontrol中我們發現有兩個比較有意思的屬性,items和itemssource。

items:

items屬於itemcollection的集合型別,所以每乙個item裡面都可以放入乙個object型別物件,這裡有意思的地方就是,如果我放入的是乙個ui元素,那麼很好,wpf會呼叫ui的onrender方法將ui元素呈現,如果說是乙個沒有onrender方法的元素,那該怎麼辦呢?wpf很智慧型,它會建立乙個textblock,然後呼叫該物件的tostring()將字串呈現在textblock上。

itemssource:

itemssource用於繫結資料來源。

下面是它的類圖:

menubase:從圖中我們可以看出menubase的子類有兩個menu和contextmenu。

selector:既然是選擇性的控制項,那麼難免少不了selectedindex或者selecteditem。

tabcontrol:顧名思義就是選項卡,因為我們知道用listbox是很占用空間的,而tabcontrol是具有更小的地方展現更多的內容,其實tabcontrol的每乙個標籤頁都是乙個tabitem。

listview:這個控制項我們在實際開發中經常用於資料繫結,它是繼承自listbox,listbox預設只能顯示一列,而listview則可以用於顯示多列,這裡我提乙個很有興趣的玩意observablecollection。它有什麼用呢?其實observablecollection可以允許乙個ui元素作為觀察者對它進行監視,也就是說如果observablecollection中的元素有變動,作為觀察的ui元素也會相應的改變,下面舉個例子。

statusbar:狀態列控制項。

treeview:我們知道treeview是乙個樹形控制項,treeview的資料繫結需要注意。

3、文字控制項

在wpf中,文字控制項有三個,分別是:textbox,richtextbox和passwordbox,類圖如下:

通過這次學習和思維整理,更加清楚了控制項的脈絡,我將在剩下的章節裡介紹餘下的控制項知識。

wpf自定義控制項(一)の控制項分類 

wpf自定義控制項(二)の重寫原生控制項樣式模板

wpf自定義控制項(三)の擴充套件控制項 

wpf自定義控制項(四)の自定義控制項

wpf自定義控制項(五)の使用者控制項

WPF自定義控制項(一) 控制項分類

原文 wpf自定義控制項 一 控制項分類 一 什麼是控制項 controls 控制項是指對資料和方法的封裝。控制項可以有自己的屬性和方法,其中屬性是控制項資料的簡單訪問者,方法則是控制項的一些簡單而可見的功能 控制項建立過程包括設計 開發 除錯 就是所謂的3ds開發流程,即design develo...

WPF自定義控制項(四) 自定義控制項

原文 wpf自定義控制項 四 自定義控制項 在實際工作中,wpf提供的控制項並不能完全滿足不同的設計需求。這時,需要我們設計自定義控制項。這裡lz總結一些自己的思路,特性如下 下面舉例說說在專案中我們經常用到調音台音量條,寫乙個自定義控制項模擬調音台音量條。自定義控制項singnallight,實現...

WPF 自定義控制項 (概述)(一)

前面已經把資料模板和控制項模板進行了分析,下面我麼們來聊聊自定義控制項吧!為什麼在講完了模板後才講自定義控制項呢?從組成結構方面來說 每乙個使用者控制項都會實現於frameworkelement類。在 frameworkelement中有乙個屬性叫template。看到這裡,他們之間的關係已經顯而易...