MVVM绑定多层级数据到TreeView并设置项目展开
2012-04-11 10:19
323 查看
昨天在做项目的时候碰到了这个问题,发现通常我们定义的数据不法绑定到控件上,接下来我将讲一下我是怎么解决这个问题的。
要用MVVM模式在程序中将层级数据绑定到TreeView上,通常我们定义的数据是形如文件夹和文件的结构,如:
folder-
file1
folder1-
file2
folder2-
这样的数据,我们一般定义的类如下
而在XAML中直接用两个DataType类型为Folder和File的HierarchicalDataTemplate表示Folders和Files,这样显示出来的数据不能完整按照我们的意图的显示出来。显示结果为
folder-
folder1
结果只显示了文件Folder信息。
怎么解决这个问题呢?
我们在Folder类中定义这个Items属性,接下来就是XAML部分
View Code
这样就完美的解决了这个问题,看来多层级数据,XAML中只能解析为单属性递归。
数据绑定做完后,我还想在一开始加载就屏开TreeView中的所有项,其实这个只需要设置一下ItemContainerStyle的Style就可以了,如下
大家还有更好的办法绑定多层级数据吗?
要用MVVM模式在程序中将层级数据绑定到TreeView上,通常我们定义的数据是形如文件夹和文件的结构,如:
folder-
file1
folder1-
file2
folder2-
这样的数据,我们一般定义的类如下
public class Folder { public string Name{set;get;} public IList<Folder> Folders{set;get;} public IList<File> Files{set;get;} } public class File { public string Name{set;get;} }
而在XAML中直接用两个DataType类型为Folder和File的HierarchicalDataTemplate表示Folders和Files,这样显示出来的数据不能完整按照我们的意图的显示出来。显示结果为
folder-
folder1
结果只显示了文件Folder信息。
怎么解决这个问题呢?
public IList<object> Items { get{ IList<object> items = new List<object>(); foreach(var fo in this.Folders) items.Add(fo); foreach(var f in this.Files) items.Add(f); return items; } }
我们在Folder类中定义这个Items属性,接下来就是XAML部分
View Code
<HierarchicalDataTemplate DataType="{x:Type Model:Folder}" ItemsSource="{Binding Items}"> <TextBlock Text="{Binding Name}" /> </HierarchicalDataTemplate> <DataTemplate DataType="{x:Type Model:File}"> <TextBlock Text="{Binding Name}" /> </DataTemplate>
这样就完美的解决了这个问题,看来多层级数据,XAML中只能解析为单属性递归。
数据绑定做完后,我还想在一开始加载就屏开TreeView中的所有项,其实这个只需要设置一下ItemContainerStyle的Style就可以了,如下
<TreeView.ItemContainerStyle> <Style TargetType="{x:Type TreeViewItem}"> <Setter Property="IsExpanded" Value="True" /> </Style> </TreeView.ItemContainerStyle>
大家还有更好的办法绑定多层级数据吗?
相关文章推荐
- Silverlight项目笔记7:xml/json数据解析、TreeView、引用类型与数据绑定错误、图片加载、虚拟目录设置、silverlight安全机制引发的问题、WebClient缓存问题
- Mvvm Light TreeView 数据绑定
- Silverlight之MVVM模式简单介绍项目(数据绑定)
- Silverlight项目笔记1:UI控件与布局、MVVM、数据绑定、await/async、Linq查询、WCF RIA Services、序列化、委托与事件
- 从数据库读取数据绑定到TreeView(内含设置样式,图片)
- Kendo UI开发教程(13): Kendo MVVM 数据绑定(二) Checked
- Mvvm Light Toolkit for wpf/silverlight系列之数据绑定
- Kendo UI开发教程(18): Kendo MVVM 数据绑定(七) Invisible/Visible
- DX控件中TreeView绑定层次数据库数据
- Qt treeView的展开折叠按钮的设置
- WinForm中动态绑定TreeView数据
- winform中的TreeView的数据绑定
- treeview控件(动态数据绑定+整行选择)(WPF)(一)
- asp.net 2.0 TreeView 数据绑定(原创)
- Codeigniter3.0项目分页-数据分页中url地址有多个参数时的分页设置
- MVP项目研究——BaseActivity实现基本数据的绑定与释放
- Dropdownlist绑定数据源之后,如何设置期中一个项目为已选项
- TreeView数据绑定的方法(可实现无限递归)
- 项目笔记:导出Excel功能设置导出数据样式
- asp.net 2.0 TreeView 数据绑定