WPF 中的 TreeView 控件用于顯示層次結構數據。它是由可展開和可折疊的 TreeViewItem 節點組成的,這些節點可以無限嵌套以表示數據的層次。
TreeView 基本用法
例如實現下圖的效果:
xaml代碼如下:
<Window x:Class="TreeView01.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:local="clr-namespace:TreeView01"mc:Ignorable="d"Title="MainWindow" Height="450" Width="800"><Grid><TreeView><TreeViewItem Header="頂級項1"><TreeViewItem Header="子項1.1"/><TreeViewItem Header="子項1.2"/></TreeViewItem><TreeViewItem Header="頂級項2"><TreeViewItem Header="子項2.1"><TreeViewItem Header="子項2.1.1"/></TreeViewItem><TreeViewItem Header="子項2.2"/></TreeViewItem></TreeView></Grid>
</Window>
TreeView參數介紹
WPF 中的 TreeView
控件用于顯示層次結構數據。它是由可展開和可折疊的 TreeViewItem
節點組成的,這些節點可以無限嵌套以表示數據的層次。
以下是一些與 TreeView
和 TreeViewItem
相關的關鍵概念和屬性:
TreeView 的關鍵屬性:
ItemsSource
:綁定到一個數據源,數據源中的每個項將被表示為一個TreeViewItem
。ItemTemplate
:定義如何顯示每個TreeViewItem
的數據模板。SelectedItem
:獲取或設置當前選中的TreeViewItem
。SelectedValue
:當你使用SelectedValuePath
設置了屬性路徑時,SelectedValue
可以提供當前選中的TreeViewItem
的特定屬性值。SelectedValuePath
:定義SelectedValue
應該綁定的屬性路徑。
TreeViewItem 的關鍵屬性:
Items
:獲取TreeViewItem
中包含的子項的集合。IsExpanded
:獲取或設置一個值,該值表示TreeViewItem
是否展開顯示其子項。IsSelected
:獲取或設置一個值,該值表示TreeViewItem
是否被選中。Header
:獲取或設置TreeViewItem
的頭部內容,通常是顯示的文本。
TreeView 的事件:
SelectedItemChanged
:當選擇的項目發生變化時觸發的事件。Collapsed
:當TreeViewItem
折疊時觸發的事件。Expanded
:當TreeViewItem
展開時觸發的事件。
使用 TreeView
在 XAML 中使用 TreeView
,通常你會定義 ItemTemplate
來指定如何顯示數據,并且可以通過綁定 ItemsSource
來填充 TreeView
數據。
下面是一個簡單的 TreeView
XAML 示例:
<TreeView x:Name="myTreeView"SelectedItemChanged="TreeView_SelectedItemChanged"><TreeView.ItemTemplate><HierarchicalDataTemplate ItemsSource="{Binding Path=Children}"><TextBlock Text="{Binding Path=Name}" /></HierarchicalDataTemplate></TreeView.ItemTemplate>
</TreeView>
在這個例子中,每個 TreeViewItem
都假定綁定到一個擁有 Name
和 Children
屬性的對象,其中 Name
是顯示給用戶的文本,Children
是一個集合,表示子節點。
后臺代碼 (C#) 中關于填充 TreeView
的簡單示例:
public class MyItem
{public string Name { get; set; }public ObservableCollection<MyItem> Children { get; set; }
}// ...myTreeView.ItemsSource = new ObservableCollection<MyItem>
{new MyItem{Name = "Parent Item",Children = new ObservableCollection<MyItem>{new MyItem { Name = "Child Item 1" },new MyItem { Name = "Child Item 2" }}}
};
在這個例子中,我們創建了一個簡單的數據模型 MyItem
,它具有一個用于顯示的 Name
屬性和一個 Children
集合。TreeView
將顯示這些項,并允許用戶展開和折疊它們來查看層次結構。
最后,還可以通過事件處理來響應用戶的交互,比如當用戶選擇不同的 TreeViewItem
時,可能需要執行一些操作:
private void TreeView_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
{MyItem selectedItem = e.NewValue as MyItem;// 在這里處理 selectedItem
}
通過這些基本的組件和概念,你可以構建出復雜的層次結構界面,適用于文件瀏覽器、菜單結構等應用場景。