TreeView是WPF中常用的控件之一,用于显示带有层级结构的数据。以下是一个TreeView的示例,展示如何在WPF中使用TreeView控件。
1. XAML文件
创建一个新的WPF应用程序,并打开MainWindow.xaml文件。在Grid中添加一个TreeView控件,设置它的Name属性为MyTreeView。
<Window x:Class="WpfApp.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="TreeView Example" Height="450" Width="800">
<Grid>
<TreeView x:Name="MyTreeView" Margin="10">
</TreeView>
</Grid>
</Window>
2. 数据模型
为了在TreeView中显示数据,我们需要创建一个数据模型。在此示例中,我们定义了一个名为Folder的类,它包含一个名称和子文件夹列表。
public class Folder
{
public string Name { get; set; }
public List<Folder> SubFolders { get; set; }
public Folder(string name)
{
Name = name;
SubFolders = new List<Folder>();
}
}
3. 数据源
在MainWindow.xaml.cs文件中,我们创建了一个名为MyTreeData的List<Folder>类型的变量,并将其作为TreeView的数据源。
public partial class MainWindow : Window
{
public List<Folder> MyTreeData { get; set; }
// 堆代码 duidaima.com
public MainWindow()
{
InitializeComponent();
MyTreeData = GetFolders();
MyTreeView.ItemsSource = MyTreeData;
}
private List<Folder> GetFolders()
{
var folders = new List<Folder>();
var folder1 = new Folder("Folder 1");
folder1.SubFolders.Add(new Folder("Subfolder 1.1"));
folder1.SubFolders.Add(new Folder("Subfolder 1.2"));
folder1.SubFolders.Add(new Folder("Subfolder 1.3"));
var folder2 = new Folder("Folder 2");
folder2.SubFolders.Add(new Folder("Subfolder 2.1"));
folder2.SubFolders.Add(new Folder("Subfolder 2.2"));
folders.Add(folder1);
folders.Add(folder2);
return folders;
}
}
在以上代码中,我们在MainWindow的构造函数中调用GetFolders()方法,该方法返回一个包含两个文件夹(Folder 1和Folder 2)的列表。Folder1中包含三个子文件夹(Subfolder 1.1、Subfolder 1.2和Subfolder 1.3),Folder2中包含两个子文件夹(Subfolder 2.1和Subfolder 2.2)。然后,我们将MyTreeData设置为MyTreeView的ItemsSource,这样就可以将数据绑定到TreeView控件上了。
4. 数据绑定
接下来,我们将在TreeView中为数据模型添加样式和模板。在此示例中,我们将为TreeViewItem使用一个自定义样式,以使其更易于区分。
<Window.Resources>
<Style TargetType="{x:Type TreeViewItem}">
<Setter Property="IsExpanded" Value="True" />
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="FontWeight" Value="Bold"/>
</Trigger>
</Style.Triggers>
</Style>
<HierarchicalDataTemplate DataType="{x:Type local:Folder}" ItemsSource="{Binding SubFolders}">
<TextBlock Text="{Binding Name}" />
</HierarchicalDataTemplate>
</Window.Resources>
以上代码中,我们定义了一个HierarchicalDataTemplate,用于表示Folder对象的样式。在这个模板中,我们绑定了Folder对象的Name属性到一个TextBlock控件上。我们还设置了一个Trigger,当TreeViewItem被选中时,将其字体加粗。
5. 运行程序
通过按下F5运行程序,即可看到TreeView控件显示文件夹结构的数据。每个TreeViewItem都可以展开和折叠子文件夹,并且可以在TreeView中选择一个文件夹,以便清楚地显示已选中的项。