1. 程式人生 > >VS下WPF自定義控件的基本步驟和基本代碼實現

VS下WPF自定義控件的基本步驟和基本代碼實現

emp don 謝謝 generic 管理器 參數 bubuko 類的屬性 typeof

一、自定義控件的基本步驟:

(本示例項目名稱為:W;添加的自定義控件名稱為)

1、 在“解決方案資源管理器”窗口的項目名上: 右擊à添加à新建項(Ctrl+Shift+A)

技術分享圖片

2、則會彈出如下窗口,在該窗口中選擇“自定義控件(WPF)”並修改類“名稱”,點擊“添加”

技術分享圖片

3、添加成功後則會在該項目中生成CustomControl4.cs文件和Themes文件夾下的Generic.xaml文件(若已存在,則不會重新生成,只會在該文件中生成相應的XAML標記),

技術分享圖片

4、WPF架構內部已經將CustomControl4.cs文件和Generic.xaml文件進行了關聯,在CustomControl4.cs文件的CustomControl4類(該類的可以繼承自任意一個父類並繼承其父類的屬性)中進行屬性設置和邏輯實現,在Generic.xaml文件中進行控件的Style和Template的設計

5、在使用該控件時需在APP.xaml中導入Generic.xaml文件

技術分享圖片

6、到此步已經可以在本項目中使用該控件了

二、自定義屬性的基本實現:

1、如圖,本例中將CustomControl4類的父類修改為了Button類,並添加了DirectionBackgroundL和DirectionBackgroundR兩個屬性,這兩個屬性分別用來控制Generic.xaml中style中ControlTemplate裏的兩個Rectangle的Fill屬性

技術分享圖片

① 註冊該屬性(以DirectionBackgroundL為例):

publicstaticreadonlyDependencyProperty

DirectionBackgroundLProperty = DependencyProperty.Register("DirectionBackgroundL", typeof(Brush),typeof(CustomControl4),newPropertyMetadata((Brush)m_fwkElement.TryFindResource("@Blue")));

該函數

第一個參數是註冊的依賴項屬性的名稱

第二個是註冊的依賴項屬性的類型

第三個是示該依賴項屬性的所有者的類型

第四個是該依賴項屬性的元數據,即為默認數據

② 在類中聲明該屬性,並實現其get,set:

public Brush DirectionBackgroundL

{

get { return (Brush)GetValue(DirectionBackgroundLProperty); }

set { SetValue(DirectionBackgroundLProperty,value); }

}

其中①②書寫不分先後順序

2、 在Generic.xaml文件中,在添加自定義控件時系統已經自動為新添加的控件添加了Style模板

技術分享圖片

可在該模板的基礎上繼續自定義你自己想要的控件

技術分享圖片

圖中紅色框內就是要綁定的屬性,屬性綁定完成即可在界面設計時使用該控件。

本文主要針對基礎知識,如有不足之處望不吝賜教,謝謝!

VS下WPF自定義控件的基本步驟和基本代碼實現