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

2021-08-18 21:35:53 字數 1875 閱讀 5653

前面已經把資料模板和控制項模板進行了分析,下面我麼們來聊聊自定義控制項吧!

為什麼在講完了模板後才講自定義控制項呢?從組成結構方面來說:每乙個使用者控制項都會實現於frameworkelement類。在

frameworkelement中有乙個屬性叫template。看到這裡,他們之間的關係已經顯而易見。控制項模板它是自定義控制項的核心點,它從內在決定自定義控制項的外在表現,這句話聽著有點不太好理解,舉個俗一點的例子。人民幣大家都很熟悉吧,都知道它有面值1,2,5,10,20等不同的面值它的大小,花紋都不相同,那是什麼控制的呢,是模板,沒一款人民幣都對應著乙個模板,通過改變模板用來控制自定義控制項的外在表現(這裡順便提一下,既然外在表現確定了,現在想美化一下,勢必會給不同的花紋,塗上不同的顏色,這裡可以引到控制項模板和樣式的區別,控制項模板是從內在決定,樣式是在內在確定之後進行的外在美化)。

這裡有人要問了,既然控制項模板是自定義控制項的核心點,那資料模板呢?

msdn上面是這樣子定義的。controltemplate是用於定置乙個控制項視覺化結構和行為方面。這裡要注意的是乙個控制項。而datatemplate是定置乙個業務物件的可以視化結構。即是物件導向不同。是事實在開發過程有時候也會有這樣子的感覺,controltemplate一般都是用templatebinding來邦定資料,而datatemplate用的是標準的binding。什麼意思呢?也就是說controltemplate一般會去找控制項自身的依賴屬性。而是datatemplate則是去找datacontext。

上段已經把模板和自定義控制項的關係以及模板分類的前提內容簡單分析了一下,如果想要詳細了解,可以看一下

控制項模板和

資料模板系列。

複雜的社會結構,必然帶來複雜的業務關係,所以使用者制定一系列控制項也就成為一種不可避免的形勢。wpf在控制方面分為兩種:使用者控制項和自定義控制項。

usercontrol,其更像winform中自定義控制項的開發風格,在開發上更簡單快速,幾乎可以簡單地理解為:利用設計器來將多個已有控制項作為子元素來拼湊成乙個usercontrol並修改其外觀,然後後台邏輯**直接訪問這些子元素.其最大的弊端在於:其對模板樣式等支援度不好,其重複使用的範圍有限.

customcontrol, 其開發出來的控制項才真正具有wpf風格,其對模板樣式有著很好的支援,這是因為打造customcontrol時做到了邏輯**與外觀相分離,即使換上一套完全不同的視覺樹其同樣能很好的工作,就像wpf內建的控制項一樣.在使用visual studio打造控制項時,usercontrol與customcontrol的差別就更加明顯,在專案中新增乙個usercontrol時,我們會發現設計器為我們新增了乙個xaml檔案以及乙個對應的.cs檔案(或.vb等),然後你就可以像設計普通窗體一樣設計該usercontrol; 如果我們是在專案中新增乙個customcontrol,情況卻不是這樣,設計器會為我們生成乙個.cs檔案(或.vb等),該檔案用於編寫控制項的後台邏輯,而控制項的外觀卻定義在了軟體的應用主題(theme)中了(如果你沒有為軟體定義通用主題,其會自動生成乙個通用主題themes\generic.xaml, 然後主題中會自動為你的控制項生成乙個style),並將通用主題與該控制項關聯了起來.這也就是customcontrol對樣式的支援度比usercontrol好的原因.

如果1你準備打造乙個控制項,並使用像visual studio這樣的工具來開發的話,打造usercontrol時其會自動為你從system.windows.controls.usercontrol繼承,打造customcontrol時其會為從system.windows.controls.control繼承.但實際情況下,也許我們從他們的衍生類別開始繼承會得到更多的好處(更好的重用已有的邏輯),比如你的控制項擁有更多的類似於button的某些特性,那麼從button開始繼承就比從control繼承少寫很多**.

接下來,會從如何打造

usercontrol與customcontrol以及讓它們更好支援wpf新特性.

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

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

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

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

自定義控制項概述

位址如下 前言 在android開發過程中,我們不免會遇到一些特殊的情況,有時系統給的ui控制項並不能滿足我們的開發需求,於是自定義view就顯得十分緊迫了,這篇文章就是讓大家步入自定義控制項的殿堂,讓大家了解自定義控制項的基本步驟 今天要講的內容包括 自定義控制項的基本步驟 1.1 繼承view,...