Kino.Toolkit.Wpf
Kino.Toolkit.Wpf是一組簡單實用的WPF控件與工具,用於介紹自定義控件的入門。相關博客地址如下:
介紹開始一個自定義控件庫項目需要考慮的地方,包括版本號、目錄結構等。
ContentControl是WPF中最基礎的一種控件,Window、Button、ScrollViewer、Label、ListBoxItem等都繼承自ContentControl。而且ContentControl的結構十分簡單,很適合用來入門自定義控件。
這篇文章通過自定義一個ContentControl來介紹自定義控件的一些基礎概念,包括自定義控件的基本步驟及其組成。
WPF提供了一大堆ItemsControl的派生類:HeaderedItemsControl、TreeView、Menu、StatusBar、ListBox、ListView、ComboBox;而且配合Style或DataTemplate足以完成大部分的定制化工作。可以說ItemsControl是XAML系統靈活性的最佳代表。這篇文章介紹簡單的自定義ItemsControl知識,通過重寫GetContainerForItemOverride和IsItemItsOwnContainerOverride、PrepareContainerForItemOverride函數並使用ItemContainerGenerator等自定義一個簡單的IItemsControl控件。
介紹自定義控件的代碼如何和ControlTemplate交互,涉及的知識包括RelativeSource、Trigger、TemplatePart和VisualState,以及它們之間的選擇。
WPF控件庫通常都會提供“素顏”的外觀,這樣做的最大好處是可以和原生控件或其它控件庫兼容。這篇文章以Button為例,談談現在最常用的Aero2主題的設計元素,以及尺寸、顏色、字體、動畫等細節。
Form是一個輕量的表單布局控件,同時也是一個很好的結合了ItemsControl、ContentControl、附加屬性的教學例子。
為了讓Form可以在加載后自動獲得焦點,我創建了一個叫FocusService的工具類,這篇文章介紹這個類的使用及原理,以及補充一些WPF焦點的知識。
這篇文章介紹了另一種ItemsControl的實現方式,並使用它為Form及自定義Window添加常用的按鈕及其它功能。
這篇文章主要討論標准Window的UI元素和行為。無論是桌面編程還是日常使用,Window(窗體)都是最常接觸的UI元素之一,既然Window這么重要那么多了解一些也沒有壞處。
介紹使用WindowChrome自定義Window的原理及各種細節。
使用WindowChrome自定義Window會遇到很多問題,例如最大化的尺寸問題,這篇文章介紹如何處理這些細節。
因為WPF原生的RibbonWindow有不少UI上的Bug,所以我提供了一個自定義的RibbonWindow以解決這些問題。
介紹WPF怎么做篩選及排序,以及使用自定義的附加屬性實現文本高亮。
這篇文章介紹了使用TypeConverter簡化調用,以及繼承自FrameworkElement以便使用Style。
VisualTreeExtensions封裝了VisualTreeHelper
並提供了各種查詢Visual Tree的方法,這篇文檔介紹了這個工具類大致的內容,以及使用上要注意的地方。
了解WPF的布局過程,並利用Measure為Expander添加動畫
這篇文章介紹WPF UI元素的兩步布局過程,並且通過Resizer控件介紹只使用Measure可以實現些什么內容。
繼續Measure的話題,這次真的創建了個自定義的Expander。
這篇文章的目的是介紹怎么在WPF里創建自定義的HyperlinkButton控件。
關於ScrollViewr和滾動輪劫持(scroll-wheel-hijack)
這篇文章介紹了如何自定義ScrollViewer以避免滾動輪劫持的問題。
這篇文章介紹如何在WPF中模仿UWP的ProgressRing。
介紹如何為ListBox和DataGrid添加用於選中項目的CheckBox。
這篇文章將介紹如何自定義一個RadioButtonMenuItem控件實現MenuItem的單選功能。
自定義一個“傳統”的 Validation.ErrorTemplate
這篇文章介紹如何自定義一個模仿 Silverlight 的 Validation.ErrorTemplate,以便可以展示詳細的錯誤信息。