2009年6月23日 星期二

[WPF] 項目控制項

簡介

由於項目控制項繼承自 System.Windows.Controls.ItemsControl 類別,因此可以容納整個集合的物件,不限定單一物件,而且每個項目都可以是任何物件。(UIElement 會呈現出來,非 UIElement 則是顯示 ToString() 的結果)

ItemsControl 有幾個屬性必須要了解:
  1. HasItems:用來檢查集合中有沒有內容

  2. IsGrouping:用來辨識集合中的項目是否有分群

  3. DisplayMemberPath:使用項目物件中的屬性來顯示(也可以是運算式喔!)

而項目控制項大致可分為以下三類:
  1. 選取器

  2. 功能表

  3. 其他項目控制項



選取器

選取器的特色在於可用 index 的方式存取,並且可以選取。

因此選取器繼承 ItemsControl 之後,額外加入了處理選取功能的屬性,例如 SelectedIndex、SelectedItem、SelectedValue .... 等等都是。

而 WPF 中提供了四個選取器控制項,分別是 ComboBoxListBox、ListView、TabControl。


ComboBox

ComboBox 中定義了屬性 IsDropDown 可判斷目前下拉式選單的狀態是展開或是收合;另外還定義了兩個事件,分別是 OnDropDownOpened 以及 OnDropDownClosed,可在有特殊需求時填入相對應的程式碼。

以下為範例:
(IsEditable = false)

(IsEditable = true)

若是要更清晰的表達每個項目,可使用 ComBoxItem 標籤包住每一個項目內容,如此一來,不只清楚,還可以在 ComboBoxItem 標籤上加上 IsSelected 或是 IsHightlighted 等屬性。

但若使用 ComboBoxItem,TextSearch.Text 屬性就無法設定在上面範例的 StackPanel 上,而是要設定在 ComboBoxItem 上囉!


ListBox

基本上 ListBox 跟 ComboBox 是很相似的,只是 ListBox 一次顯示所有項目而已,且有三種不同的選取模式:
  1. Single (預設)

  2. Multiple

  3. 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 也像是功能表,但其項目是以水平堆疊而成的,上網找到幾個不錯的相關教學:


沒有留言:

張貼留言