Silverlight 中 TreeView 的数据绑定
Silverlight使用XAML标记语言来编写,如果不使用XAML强大的绑定功能,实在是罪过。通过使用绑定
,可以将UI与视图模型层分离,有利于系统的维护。作为Silverlight中比较有代表型的一个控件: TreeV
iew 有着比较特殊的绑定。与一般的绑定不同,绑定到TreeView的元素之间是一个无限级联的关系。下面
是这种绑定的最简单实现过程。
1, 引用命名空间:clrnamespace:System.Windows?assembly=System.Windows.Controls;给这
个命名空间取个别名:common
2, 为TreeView 定义数据源。这里实际上只是定义了TreeNode绑定的实体的定义,TreeView绑定的则是
这个实体对象的集合,该实体对象的定义如下:
public class TreeNode { public string Name { get; set; } public Collection<TreeNode> Nodes { get; set; } }
3, 定义TreeView中节点的模板,这个模板需要使用分层的数据模板:common:HierarchicalDataTemp
late;其代码如下:
<UserControl.Resources> <common:HierarchicalDataTemplate x:Key="TreeNodeTemplate" ItemsSource="{Binding Path=Nodes}" > <TextBlock Text="{Binding Path=Name}" /> </common:HierarchicalDataTemplate> </UserControl.Resources>
4, 将在第3步中定义的模板绑定到TreeView控件。他的绑定也是很简单,如下面的代码所示:
<sdk:TreeView HorizontalAlignment="Left" Margin="12,12,0,12" Name="treeView1" Width="199" ItemTemplate="{StaticResource TreeNodeTemplate}" />
方法一:上面的两行代码,即完成了TreeView的绑定, 只需要将在第3步中定义的模板绑定到TreeView控件的Ite
mTemplate即可。以上这4步完成之后,只需要为 TreeView ItemSource指定一个 TreeNode的集合,
即可将此实体绑定到 TreeView中。
方法二:为了让标记更加简洁,此示例中,将这一操作放到前页面的后台代码
中,如下所示:
public partial class MainPage : UserControl { private Collection<TreeNode> TreeNodes; public MainPage() { InitializeComponent(); this.Loaded += new RoutedEventHandler(MainPage_Loaded); } void MainPage_Loaded(object sender, RoutedEventArgs e) { OnLoadNodes(); OnBindDataSource(); } private void OnBindDataSource() { this.treeView1.ItemsSource = TreeNodes; } private void OnLoadNodes() { TreeNodes = new Collection<TreeNode>(); for (int i = 0; i < 10; i++) { TreeNode node = new TreeNode(); node.Name = i.ToString(); for (int j = 0; j < 10; j++) { TreeNode subNode = new TreeNode(); subNode.Name = j.ToString(); if (node.Nodes == null) node.Nodes = new Collection<TreeNode>(); node.Nodes.Add(subNode); } TreeNodes.Add(node); } } }
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。