一.前言
申明:WPF自定義控件與樣式是一個系列文章,前後是有些關聯的,但大多是按照由簡到繁的順序逐漸釋出的等,若有不明白的地方可以參考本系列前面的文章,文末附有部分文章連結。
本文主要内容:
下拉選擇控件ComboBox的自定義樣式及擴充;
自定義多選控件MultiComboBox;
二.下拉選擇控件ComboBox的自定義樣式及擴充
2.1基本樣式
先看看基礎效果圖:

從功能上ComboBox有兩種狀态:
可編輯文本;
不可編輯文本。
從XAML的邏輯樹結構上看,分為幾個部分:
顯示目前内容的區域;
下拉按鈕,一般使用ToggleButton;
彈出的下拉選項清單,使用Popup作為容器;
樣式定義代碼:
View Code
如果看過本系列前面的文章,對上面的代碼就更容易了解了,為了友善支援水印、Label标簽、清除内容功能擴充,在基礎樣式裡加了額外的部分,在xaml中有注釋說明。
2.2 Label标簽樣式
效果圖:
在2.1的基礎樣式上擴充即可:
使用示例:
2.3 擴充清除選中項/文本按鈕樣式
同樣,也是在2.1的基礎樣式上擴充:
使用示例:
三.自定義多選控件MultiComboBox
實際需求中,經常有多選的要求,基于ComboBox簡單的實作了一個多選控件MultiComboBox。效果圖:
在功能上,可以滿足基本需求,實際功能還不完整的,可以根據自己的需求完善,背景C#代碼:
樣式上,也實作了同第二節一樣的擴充,包括支援水印、Label标簽、清除内容功能擴充,就不做具體介紹了,基礎樣式代碼:
使用執行個體:
補充:EditableTextBoxStyle及ComboToggleButton樣式代碼:
附錄:參考引用
<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 & RichTextBox & 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>
個人能力有限,本文内容僅供學習、探讨,歡迎指正、交流。