天天看點

WPF自定義控件與樣式(15)-終結篇

系列文章目錄   

<a href="http://www.cnblogs.com/anding/p/4961215.html" target="_blank">WPF自定義控件與樣式(1)-矢量字型圖示(iconfont)</a>

<a href="http://www.cnblogs.com/anding/p/4968050.html" target="_blank">WPF自定義控件與樣式(2)-自定義按鈕FButton</a>

<a href="http://www.cnblogs.com/anding/p/4970845.html" target="_blank">WPF自定義控件與樣式(3)-TextBox &amp; RichTextBox &amp; PasswordBox樣式、水印、Label标簽、功能擴充</a>

<a href="http://www.cnblogs.com/anding/p/4976559.html" target="_blank">WPF自定義控件與樣式(4)-CheckBox/RadioButton自定義樣式</a>

<a href="http://www.cnblogs.com/anding/p/4979764.html">WPF自定義控件與樣式(5)-Calendar/DatePicker日期控件自定義樣式及擴充</a>

<a href="http://www.cnblogs.com/anding/p/4987426.html">WPF自定義控件與樣式(6)-ScrollViewer與ListBox自定義樣式</a>

<a href="http://www.cnblogs.com/anding/p/4990492.html">WPF自定義控件與樣式(7)-清單控件DataGrid與ListView自定義樣式</a>

<a href="http://www.cnblogs.com/anding/p/4993655.html" target="_blank">WPF自定義控件與樣式(8)-ComboBox與自定義多選控件MultComboBox</a>

<a href="http://www.cnblogs.com/anding/p/4996614.html" target="_blank">WPF自定義控件與樣式(9)-樹控件TreeView與菜單Menu-ContextMenu</a>

<a href="http://www.cnblogs.com/anding/p/5006279.html">WPF自定義控件與樣式(11)-等待/忙/正在加載狀态-控件實作</a>

<a href="http://www.cnblogs.com/anding/p/5009120.html">WPF自定義控件與樣式(12)-縮略圖ThumbnailImage /gif動畫圖/圖檔清單</a>

<a href="http://www.cnblogs.com/anding/p/5011981.html">WPF自定義控件與樣式(13)-自定義窗體Window &amp; 自适應内容大小消息框MessageBox</a>

<a href="http://www.cnblogs.com/anding/p/5018363.html">WPF自定義控件與樣式(15)-終結篇</a>

一.總結.聲明

  關于本WPF,本人也隻能算是一個剛入門的,在學習中和工作中,學習、借鑒了很多網友的文章和開源的項目的知識。發現提供實際項目開發需要的基礎控件、樣式的文章大都比較散,不成系列。是以基于現在項目中使用的基礎UI庫,寫了這個系列,希望對有需要的人有所幫助。

  本系列包括本文共15篇,就到此為止了。關于一些問題再次說明一下:

每一篇文章中都給出了基本所有主要代碼,目的僅供參考學習,由于目前還是公司在使用中的項目,是以不便提供完整項目源碼,有需要的同學還是多動動手吧! 對于确實需要源碼參考學的,推薦開源項目MahApps.Metro(http://mahapps.com/),我在那裡面學習借鑒了很多,本系列中不少樣式中都有她(就是她)的影子。 本文會把一些額外遺漏的資源或代碼一并提供出來

二.附錄.本系列補充資源

2.1附加屬性

  很多樣式中使用了附加屬性來對基礎控件擴充,ControlAttachProperty.cs所有代碼:  

WPF自定義控件與樣式(15)-終結篇
WPF自定義控件與樣式(15)-終結篇

View Code

  其中有一個比較好玩的附加屬性就是AllowsAnimationProperty,實作旋轉動畫的支援,類型為bool,可以有很多種使用方式,如綁定到普通控件的IsMouseOver上,當滑鼠懸浮就旋轉180度,移開又轉回去,效果(gif錄制的問題,看上去沒有那麼流程):

WPF自定義控件與樣式(15)-終結篇

  也可以綁定到CheckBox、RadioButton、ToggleButton的IsChecked屬性上。

2.2擴充方法

  靜态擴充類ControlExtession.cs代碼:  

WPF自定義控件與樣式(15)-終結篇
WPF自定義控件與樣式(15)-終結篇

2.3配色資源Colors.xaml

  本系列前面文章中,基本所有樣式中都沒有直接使用具體色彩,而是通過資源的方式配置的,這些配色資源都在Colors.xaml中。這樣的設計理論上可以實作換膚,在不同用戶端中也很容易定制自己需要的風格色彩搭配。 Colors.xaml代碼: 

2.4轉換器

  BackgroundToForegroundConverter.cs代碼:  

  PercentToAngleConverter.cs代碼:  

  ThicknessToDoubleConverter.cs代碼:  

  TreeViewMarginConverter.cs代碼:  

  TrueToFalseConverter.cs代碼:  

  為了使用簡單,對常用的轉換器定義了靜态變量的引用:  

  然後使用時就不用在xaml中聲明資源了,通過靜态引用的方式使用,就是這樣的: 

EndAngle="{TemplateBinding Value, Converter={x:Static local:XConverter.PercentToAngleConverter}}"

 2.6其他樣式

  Share.xaml:  

WPF自定義控件與樣式(15)-終結篇
WPF自定義控件與樣式(15)-終結篇

  Global.xaml  

  TablControl 的樣式,TablControl.xaml  

WPF自定義控件與樣式(15)-終結篇
WPF自定義控件與樣式(15)-終結篇

個人能力有限,本文内容僅供學習、探讨,歡迎指正、交流。