天天看點

WPF自定義控件與樣式(8)-ComboBox與自定義多選控件MultComboBox

一.前言

  申明:WPF自定義控件與樣式是一個系列文章,前後是有些關聯的,但大多是按照由簡到繁的順序逐漸釋出的等,若有不明白的地方可以參考本系列前面的文章,文末附有部分文章連結。

  本文主要内容:

下拉選擇控件ComboBox的自定義樣式及擴充;

自定義多選控件MultiComboBox;

二.下拉選擇控件ComboBox的自定義樣式及擴充

2.1基本樣式

  先看看基礎效果圖:

WPF自定義控件與樣式(8)-ComboBox與自定義多選控件MultComboBox
WPF自定義控件與樣式(8)-ComboBox與自定義多選控件MultComboBox

  從功能上ComboBox有兩種狀态:

可編輯文本;

不可編輯文本。

從XAML的邏輯樹結構上看,分為幾個部分:

顯示目前内容的區域;

下拉按鈕,一般使用ToggleButton;

彈出的下拉選項清單,使用Popup作為容器;

樣式定義代碼:  

WPF自定義控件與樣式(8)-ComboBox與自定義多選控件MultComboBox
WPF自定義控件與樣式(8)-ComboBox與自定義多選控件MultComboBox

View Code

  如果看過本系列前面的文章,對上面的代碼就更容易了解了,為了友善支援水印、Label标簽、清除内容功能擴充,在基礎樣式裡加了額外的部分,在xaml中有注釋說明。 

2.2 Label标簽樣式

效果圖:

WPF自定義控件與樣式(8)-ComboBox與自定義多選控件MultComboBox

在2.1的基礎樣式上擴充即可:  

使用示例:  

2.3 擴充清除選中項/文本按鈕樣式

WPF自定義控件與樣式(8)-ComboBox與自定義多選控件MultComboBox

同樣,也是在2.1的基礎樣式上擴充:  

  使用示例:

三.自定義多選控件MultiComboBox

  實際需求中,經常有多選的要求,基于ComboBox簡單的實作了一個多選控件MultiComboBox。效果圖:

WPF自定義控件與樣式(8)-ComboBox與自定義多選控件MultComboBox

  在功能上,可以滿足基本需求,實際功能還不完整的,可以根據自己的需求完善,背景C#代碼:

WPF自定義控件與樣式(8)-ComboBox與自定義多選控件MultComboBox
WPF自定義控件與樣式(8)-ComboBox與自定義多選控件MultComboBox

  樣式上,也實作了同第二節一樣的擴充,包括支援水印、Label标簽、清除内容功能擴充,就不做具體介紹了,基礎樣式代碼:

WPF自定義控件與樣式(8)-ComboBox與自定義多選控件MultComboBox
WPF自定義控件與樣式(8)-ComboBox與自定義多選控件MultComboBox

  使用執行個體:  

  補充:EditableTextBoxStyle及ComboToggleButton樣式代碼:

WPF自定義控件與樣式(8)-ComboBox與自定義多選控件MultComboBox
WPF自定義控件與樣式(8)-ComboBox與自定義多選控件MultComboBox

附錄:參考引用

<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>

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