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="" ItemTemplate="{StaticResource TreeNodeTemplate}" />
上面的两行代码,即完成了TreeView的绑定, 只需要将在第3步中定义的模板绑定到TreeView控件的Ite
mTemplate即可。以上这4步完成之后,只需要为 TreeView ItemSource指定一个 TreeNode的集合,
即可将此实体绑定到 TreeView中。
方法二:为了让标记更加简洁,此示例中,将这一操作放到前页面的后台代码
中,如下所示:
public partial class Page1 : UserControl
{
public Page1()
{
InitializeComponent();
} private void LayoutRoot_Loaded(object sender, RoutedEventArgs e)
{
Person p = new Person();
p.Name = "xujiaoxiang";
p.Age = ;
p.Address = "dd";
this.LayoutRoot.DataContext = p;
} private void TreeView_Loaded(object sender, RoutedEventArgs e)
{
Tree tree = new Tree();
tree.Name = "root";
tree.Children = new List<Tree>();
for (int i = ; i < ; i++)
{
Tree child = new Tree();
child.Name = "child" + i.ToString();
child.Children = new List<Tree>();
for (int j = ; j < i; j++)
{
Tree sub = new Tree();
sub.Name = "sub" + j.ToString();
sub.Children = null;
child.Children.Add(sub);
}
tree.Children.Add(child);
}
myTreeView.DataContext = tree;
//myTreeView.ItemsSource = tree.Children;
} public class Tree
{
public string Name { get; set; }
public List<Tree> Children { get; set; }
}
}
Silverlight 中 TreeView 的数据绑定的更多相关文章
- Silverlight中ListBox的数据绑定
在Silverlight中ListBox是一个非常强大的控件.总结下ListBox的绑定数据的方式. 首先,新建一个Book类, public class Book { public string B ...
- .net中的TreeView的数据绑定与EasyUi_tree的数据绑定
昨天看到了.net中的TreeView,学习了一波TreeView的数据绑定,联想到EasyUi中的Tree的数据,觉得里面的逻辑差不多,就总结了一下两者的数据绑定. 前端页面和必要的JS如下 < ...
- Silverlight实用窍门系列:57.Silverlight中的Binding使用(二)-数据验证
本文将简单讲述Silverlight中的Binding数据时的数据验证. NotifyOnValidationError:是否在出现异常/错误信息的时候激发BindingValidationError ...
- silverlight中 ComboBox绑定数据库,并获取当前选定值
silverlight中 ComboBox绑定数据库,并获取当前选定值 在silverlight中 用combobox下拉菜单绑定数据库的方法和用DataGrid绑定数据库的方法类似. page.xa ...
- Silverlight中文本框添加回车事件后,换行无法清除的解决方法
在开发Silverlight的项目中,为了更好的用户体验,我们常要给一些控件添加一些快捷键.然而,在Silverlight中当用户回车提交后,光标停留在文本框的第二行怎么也清除不掉,经过一段时间研究, ...
- SharePoint 2013 Silverlight中使用Net客户端对象模型
1.创建Silverlight时,选择Silverlight 4,不要选择版本5,试了很久版本5都调用不了,自己也不知道什么原因,谷歌也没找到答案,后来尝试版本4,可以调用: 至于Host the S ...
- Silverlight中的TabControl如何绑定数据?重写tabcontrol和tabItem 解决绑定友好问题。可以绑定对象集合
在 WPF 中,TabControl 可以直接将 ItemsSource 绑定数据源,见 将 TabControl 绑定到数据的示例 http://msdn.microsoft.com/zh-cn/l ...
- ArcGIS API for Silverlight中加载Google地形图(瓦片图)
原文:ArcGIS API for Silverlight中加载Google地形图(瓦片图) 在做水利.气象.土地等行业中,若能使用到Google的地形图那是再合适不过了,下面就介绍如何在ArcGIS ...
- 在Silverlight中实施RESTful调用
在Silverlight中实施RESTful调用: http://book.51cto.com/art/201006/206314.htm http://bbs.csdn.net/topic ...
随机推荐
- [Flexbox] Using order to rearrange flexbox children
Using the order property we alter the order in which flexbox children appear on the page, without ma ...
- ProgressBar 基本介绍
简介 ProgressBar 继承自View,用于在界面上显示一个进度指示的界面. 1.ProgressBar有两个进度,一个是android:progress,另一个是android:seconda ...
- My.Ioc 代码示例——避免循环依赖
本文的目的在于通过一些示例,向大家说明 My.Ioc 支持哪些类型的依赖关系.也就是说,如何设计对象不会导致循环依赖. 在 Ioc 世界中,循环依赖是一个顽敌.这不仅因为它会导致 Ioc 容器抛出异常 ...
- 关于timestamp的二三事
之所以要写timestamp的随笔,是因为之前对它的理解存在误区,so. I have to remind myself by writing this informal essay. 微软文档链接: ...
- (转)Android Touch事件传递机制
-----来源:http://www.trinea.cn/android/touch-event-delivery-mechanism/ 介绍Android Touch事件的传递机制. 不少朋友私信问 ...
- UVA 10131 - Is Bigger Smarter? (动态规划)
Is Bigger Smarter? The Problem Some people think that the bigger an elephant is, the smarter it is. ...
- underscorejs-find学习
2.5 find 2.5.1 语法: _.find(list, predicate, [context]) 2.5.2 说明: 对list集合的每个成员依次进行匹配(根据predicate迭代函数检测 ...
- MYSQL 存储过程1、SQL存储过程的基础知识
在深入理解MySq之前,我们先理下一些简单的问题 Q:什么是存储过程?(stored procedure) A:是一段写好的SQL代码,特别的就是它是存在数据库的目录里.所以外部程序可以直接调用数据库 ...
- 给AVS添加描述(how to add a description to a video)
UPDATE you might need edit few files. 1. add the input field to the tpl file: /templates/frontend/yo ...
- WinPcap编程(三)
1.过滤器设置 设置过滤器,得到你想要的哪种类型的包.Like WireShark. 过程:编译过滤器,然后设置过滤器.直接上参考文档的代码: if (d->addresses != NULL) ...