[WPF 自定義控件]自定義控件庫系列文章


Kino.Toolkit.Wpf

Kino.Toolkit.Wpf是一組簡單實用的WPF控件與工具,用於介紹自定義控件的入門。相關博客地址如下:

開始一個自定義控件庫項目

介紹開始一個自定義控件庫項目需要考慮的地方,包括版本號、目錄結構等。

從ContentControl開始入門自定義控件

ContentControl是WPF中最基礎的一種控件,Window、Button、ScrollViewer、Label、ListBoxItem等都繼承自ContentControl。而且ContentControl的結構十分簡單,很適合用來入門自定義控件。

這篇文章通過自定義一個ContentControl來介紹自定義控件的一些基礎概念,包括自定義控件的基本步驟及其組成。

了解如何自定義ItemsControl

WPF提供了一大堆ItemsControl的派生類:HeaderedItemsControl、TreeView、Menu、StatusBar、ListBox、ListView、ComboBox;而且配合Style或DataTemplate足以完成大部分的定制化工作。可以說ItemsControl是XAML系統靈活性的最佳代表。這篇文章介紹簡單的自定義ItemsControl知識,通過重寫GetContainerForItemOverride和IsItemItsOwnContainerOverride、PrepareContainerForItemOverride函數並使用ItemContainerGenerator等自定義一個簡單的IItemsControl控件。

自定義控件的代碼如何與ControlTemplate交互

介紹自定義控件的代碼如何和ControlTemplate交互,涉及的知識包括RelativeSource、Trigger、TemplatePart和VisualState,以及它們之間的選擇。

以Button為例談談如何模仿Aero2主題

WPF控件庫通常都會提供“素顏”的外觀,這樣做的最大好處是可以和原生控件或其它控件庫兼容。這篇文章以Button為例,談談現在最常用的Aero2主題的設計元素,以及尺寸、顏色、字體、動畫等細節。

簡單的表單布局控件

Form是一個輕量的表單布局控件,同時也是一個很好的結合了ItemsControl、ContentControl、附加屬性的教學例子。

讓Form在加載后自動獲得焦點

為了讓Form可以在加載后自動獲得焦點,我創建了一個叫FocusService的工具類,這篇文章介紹這個類的使用及原理,以及補充一些WPF焦點的知識。

為Form和自定義Window添加FunctionBar

這篇文章介紹了另一種ItemsControl的實現方式,並使用它為Form及自定義Window添加常用的按鈕及其它功能。

Window(窗體)的UI元素及行為

這篇文章主要討論標准Window的UI元素和行為。無論是桌面編程還是日常使用,Window(窗體)都是最常接觸的UI元素之一,既然Window這么重要那么多了解一些也沒有壞處。

使用WindowChrome自定義Window Style

介紹使用WindowChrome自定義Window的原理及各種細節。

使用WindowChrome的問題

使用WindowChrome自定義Window會遇到很多問題,例如最大化的尺寸問題,這篇文章介紹如何處理這些細節。

使用WindowChrome自定義RibbonWindow

因為WPF原生的RibbonWindow有不少UI上的Bug,所以我提供了一個自定義的RibbonWindow以解決這些問題。

排序、篩選以及高亮

介紹WPF怎么做篩選及排序,以及使用自定義的附加屬性實現文本高亮。

使用TypeConverter強化文本高亮的功能

這篇文章介紹了使用TypeConverter簡化調用,以及繼承自FrameworkElement以便使用Style。

好用的VisualTreeExtensions

VisualTreeExtensions封裝了VisualTreeHelper並提供了各種查詢Visual Tree的方法,這篇文檔介紹了這個工具類大致的內容,以及使用上要注意的地方。

了解WPF的布局過程,並利用Measure為Expander添加動畫

這篇文章介紹WPF UI元素的兩步布局過程,並且通過Resizer控件介紹只使用Measure可以實現些什么內容。

自定義Expander

繼續Measure的話題,這次真的創建了個自定義的Expander。

給WPF一個HyperlinkButton

這篇文章的目的是介紹怎么在WPF里創建自定義的HyperlinkButton控件。

關於ScrollViewr和滾動輪劫持(scroll-wheel-hijack)

這篇文章介紹了如何自定義ScrollViewer以避免滾動輪劫持的問題。

模仿UWP的ProgressRing

這篇文章介紹如何在WPF中模仿UWP的ProgressRing。

創建包含CheckBox的ListBoxItem

介紹如何為ListBox和DataGrid添加用於選中項目的CheckBox。

在MenuItem上使用RadioButton

這篇文章將介紹如何自定義一個RadioButtonMenuItem控件實現MenuItem的單選功能。

自定義一個“傳統”的 Validation.ErrorTemplate

這篇文章介紹如何自定義一個模仿 Silverlight 的 Validation.ErrorTemplate,以便可以展示詳細的錯誤信息。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM