博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在Silverlight中使用HierarchicalDataTemplate为TreeView实现递归树状结构
阅读量:5329 次
发布时间:2019-06-14

本文共 1746 字,大约阅读时间需要 5 分钟。

将实体绑定到TreeView控件,实现树状结构的显示,如下图所示。这个功能通过HierarchicalDataTemplate实现。

 

1. 业务实体

作为举例,我定义了一个大家都很熟悉的Folder类型,即文件夹。我们都知道,文件夹又可以包含子文件夹,而且可以多层嵌套。所以,这是一个递归的结构体。

public class Folder

{

public string Name { get; set; }

public ObservableCollection<Folder> Folders { get; set; }

}

2. 准备数据

用下面的代码,模拟一个数据读取操作。下面是硬编码出来的数据。实际情况下,可以读取数据库。

void MainPage_Loaded(object sender, RoutedEventArgs e)

{

var result = new[]{

new Folder(){Name="Test",Folders =new ObservableCollection<Folder>(

new[]{

new Folder(){Name="Test4"},

new Folder(){Name="Test3"},

new Folder(){Name="Test4",Folders=new ObservableCollection<Folder>(

new []{

new Folder(){Name ="Test5"}})

}

})}};

 

tvFolders.ItemsSource = result;

}

3. 绑定控件

<UserControl x:Class="SilverlightTreeviewSample.MainPage"

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"

mc:Ignorable="d"

d:DesignHeight="300" d:DesignWidth="400" xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk">

 

<UserControl.Resources>

<sdk:HierarchicalDataTemplate x:Key="FolderItemTemplate" ItemsSource="{Binding Folders}">

<TextBlock Text="{Binding Name}"></TextBlock>

</sdk:HierarchicalDataTemplate>

<Style TargetType="sdk:TreeViewItem">

<Setter Property="IsExpanded" Value="True"></Setter>

</Style>

 

</UserControl.Resources>

 

<Grid x:Name="LayoutRoot" Background="White">

<sdk:TreeView Name="tvFolders" ItemTemplate="{StaticResource FolderItemTemplate}">

 

</sdk:TreeView>

</Grid>

</UserControl>

请注意,我们这里用到一个特殊的DataTemplateHierarchicalDataTemplate,并且将其设置为TreeviewItemTemplate

   

 

转载于:https://www.cnblogs.com/lyf681888/p/5237252.html

你可能感兴趣的文章
新手村之循环!循环!循环!
查看>>
正则表达式的用法
查看>>
线程安全问题
查看>>
SSM集成activiti6.0错误集锦(一)
查看>>
下拉刷新
查看>>
linux的子进程调用exec( )系列函数
查看>>
MSChart的研究
查看>>
C# 索引器
查看>>
MySQLdb & pymsql
查看>>
zju 2744 回文字符 hdu 1544
查看>>
delphi 内嵌汇编例子
查看>>
【luogu P2298 Mzc和男家丁的游戏】 题解
查看>>
前端笔记-bom
查看>>
MATLAB作图方法与技巧(一)
查看>>
上海淮海中路上苹果旗舰店门口欲砸一台IMAC电脑维权
查看>>
Google透露Android Market恶意程序扫描服务
查看>>
给mysql数据库字段值拼接前缀或后缀。 concat()函数
查看>>
迷宫问题
查看>>
【FZSZ2017暑假提高组Day9】猜数游戏(number)
查看>>
泛型子类_属性类型_重写方法类型
查看>>