WPF控件模型相關(guān)概念解析
WPF是一個專門用來作用于圖形界面顯示的開發(fā)工具。我們可以使用它輕松創(chuàng)建出精美的圖形界面。WPF 提供了三種用于創(chuàng)建控件的WPF控件模型,每一種都提供了一組不同的功能和靈活性級別。開始編寫新控件之前,應(yīng)先了解這些模型,這一點至關(guān)重要。#t#
WPF控件模型1。從 UserControl 派生
在 WPF 中創(chuàng)建控件的最簡單的方法是創(chuàng)建 UserControl 的子類。UserControl 的開發(fā)模型非常類似于 WPF 中用于應(yīng)用程序開發(fā)的模型:創(chuàng)建可視元素,使用可擴展應(yīng)用程序標(biāo)記語言 (XAML) 為這些可視元素指定名稱并引用事件處理程序。然后,可以通過代碼引用已命名的元素。
如果生成正確,UserControl 可以利用豐富內(nèi)容、樣式和觸發(fā)器的優(yōu)點。但是,若要支持模板,需要從 Control 派生以創(chuàng)建自定義 Control。
從 UserControl 派生的優(yōu)點
在以下情況下可考慮從 UserControl 派生:
想要以類似于生成應(yīng)用程序的方式生成控件。
控件僅由現(xiàn)有組件組成。
不需要支持復(fù)雜自定義項。
WPF控件模型2。從 Control 派生
從 Control 類派生是大多數(shù)現(xiàn)有 WPF 控件使用的模型。自定義 Control 旨在使用模板將運算邏輯與可視表示形式分開。盡管生成自定義 Control 不像生成 UserControl 那樣簡單,但自定義 Control 可提供最大的靈活性。
從 Control 派生的優(yōu)點
如果您符合以下一種或多種情況,請考慮從 Control 派生,而不使用 UserControl 類:
希望通過 ControlTemplate 自定義控件的外觀。
希望控件支持不同主題。
WPF控件模型3。從 FrameworkElement 派生
從 UserControl 和 Control 派生的控件依賴于組合現(xiàn)有元素。有時自定義組件需要的精確控制超過簡單的元素組合可提供的功能。對于這些情況,使組件基于 FrameworkElement 才是正確的選擇。生成基于 FrameworkElement 的組件有兩種標(biāo)準(zhǔn)方法:直接呈現(xiàn)和自定義元素組合。
直接呈現(xiàn)涉及的操作包括:重寫 FrameworkElement 的 OnRender 方法,并提供顯式定義組件視覺效果的 DrawingContext 操作。此方法由 Image 和 Border 使用。自定義元素組合涉及的操作包括實例化和使用 Visual 類型的對象組合組件的外觀。有關(guān)示例,請參見使用 DrawingVisual 對象。Track 是 WPF 中使用自定義元素組合的控件示例。也可以在同一控件中混合使用直接呈現(xiàn)和自定義元素組合。
從 FrameworkElement 派生的優(yōu)點
如果以下一種或多種情況適用,請考慮從 FrameworkElement 派生:
想要對控件的外觀進行精確控制,而不僅僅是簡單的元素組合提供的內(nèi)容。
想要通過定義自己的呈現(xiàn)邏輯來定義控件的外觀。
想要以一種 UserControl 和 Control 之外的新穎方式組合現(xiàn)有元素。
以上就是有關(guān)WPF控件模型的相關(guān)概念解析。