效果:
WPF:
Windows 8:
Windows Phone
整個過程還是有些曲折的,在WPF中,HeaderedContentControl和Expander控制項都是被定義的,因此WPF環境下只需定義控制項範本就可以了。
(WPF中Expander的類型樹)
而在Windows Phone和WinRT環境中,並沒有HeaderedContentControl和Expander控制項,因此需要先定義,HeaderedContentControl繼承自ContentControl只不過加了Header相關屬性,除了有Header,還有HeaderTemplate,HeaderTemplateSelector等,根據不同架構還會有不同屬性,比如WPF中還有HeaderStringFormat,而WinRT中有獨特的HeaderTransitions屬性,Windows Phone環境下的屬性相對支援最少。
定義好後HeaderedContentControl,接著就建立Expander類型,使其繼承自HeaderedContentControl。加入Expander特有的屬性:IsExpanded。同時由於Windows Phone和WinRT中沒有Trigger,因此這裡為了在控制項範本定義中不另外加Converter,我又在Windows Phone和WinRT中Expander類型中加入了一個ContentVisibility屬性來隨著IsExpanded的變化而變化,這樣的控制項範本的定義上直接綁定就可以了。
目前的版本的原始碼下載
注意:此為微軟SkyDrive存檔,請用瀏覽器直接下載,用某些下載工具可能無法下載
原始碼環境:
WPF: Microsoft Visual Studio Express 2012 for Windows Desktop
WinRT: Microsoft Visual Studio Express 2012 for Windows 8
WP: Microsoft Visual Studio Express 2012 for Windows Phone