簡介
由於項目控制項繼承自 System.Windows.Controls.ItemsControl 類別,因此可以容納整個集合的物件,不限定單一物件,而且每個項目都可以是任何物件。(UIElement 會呈現出來,非 UIElement 則是顯示 ToString() 的結果)
ItemsControl 有幾個屬性必須要了解:
而項目控制項大致可分為以下三類:
選取器
選取器的特色在於可用 index 的方式存取,並且可以選取。
因此選取器繼承 ItemsControl 之後,額外加入了處理選取功能的屬性,例如 SelectedIndex、SelectedItem、SelectedValue .... 等等都是。
而 WPF 中提供了四個選取器控制項,分別是 ComboBox、ListBox、ListView、TabControl。
由於項目控制項繼承自 System.Windows.Controls.ItemsControl 類別,因此可以容納整個集合的物件,不限定單一物件,而且每個項目都可以是任何物件。(UIElement 會呈現出來,非 UIElement 則是顯示 ToString() 的結果)
ItemsControl 有幾個屬性必須要了解:
- HasItems:用來檢查集合中有沒有內容
- IsGrouping:用來辨識集合中的項目是否有分群
- DisplayMemberPath:使用項目物件中的屬性來顯示(也可以是運算式喔!)
而項目控制項大致可分為以下三類:
- 選取器
- 功能表
- 其他項目控制項
選取器
選取器的特色在於可用 index 的方式存取,並且可以選取。
因此選取器繼承 ItemsControl 之後,額外加入了處理選取功能的屬性,例如 SelectedIndex、SelectedItem、SelectedValue .... 等等都是。
而 WPF 中提供了四個選取器控制項,分別是 ComboBox、ListBox、ListView、TabControl。
ComboBox
ComboBox 中定義了屬性 IsDropDown 可判斷目前下拉式選單的狀態是展開或是收合;另外還定義了兩個事件,分別是 OnDropDownOpened 以及 OnDropDownClosed,可在有特殊需求時填入相對應的程式碼。
ComboBox 中定義了屬性 IsDropDown 可判斷目前下拉式選單的狀態是展開或是收合;另外還定義了兩個事件,分別是 OnDropDownOpened 以及 OnDropDownClosed,可在有特殊需求時填入相對應的程式碼。
以下為範例:
(IsEditable = false)
(IsEditable = true)
若是要更清晰的表達每個項目,可使用 ComBoxItem 標籤包住每一個項目內容,如此一來,不只清楚,還可以在 ComboBoxItem 標籤上加上 IsSelected 或是 IsHightlighted 等屬性。
但若使用 ComboBoxItem,TextSearch.Text 屬性就無法設定在上面範例的 StackPanel 上,而是要設定在 ComboBoxItem 上囉!
ListBox
基本上 ListBox 跟 ComboBox 是很相似的,只是 ListBox 一次顯示所有項目而已,且有三種不同的選取模式:
- Single (預設)
- Multiple
- Extended:搭配 Shift/Ctrl 進行多選
而 ComboBox 有 ComboBoxItem 標籤,ListBox 也有 ListBoxItem 標籤可以使用囉!
ListView
ListView 繼承自 ListBox,額外增加了 View 的屬性,可以讓開發者自訂更豐富的顯示方式,以下示範使用方式:
TabControl
TabControl 是很基本的控制項,以下為示範:
功能表
這部分有 Menu 以及 ContextMenu 兩個控制項,使用起來的效果與原本 2.0 中其實是差不多的,可以參考以下範例:
其他項目控制項
此部分包含了 TreeView、ToolBar、StatusBar 等等。
TreeView
以下是 TreeView 控制項的使用範例:
另外還有查到 TreeView 的使用範例教學,可以參考看看!
而 TreeViewItem 較為常用的屬性有 IsExpanded、IsSelected 兩個屬性,以及 Expanded、Collapsed、Selected、Unselected 這幾個事件囉!
ToolBar
可以把 ToolBar 想像是功能表的加強版! 可以將許多按鈕群組在一起。
以下找到一個簡單的使用範例教學:
StatusBar
StatusBar 也像是功能表,但其項目是以水平堆疊而成的,上網找到幾個不錯的相關教學:
沒有留言:
張貼留言