方法一:Silverlight使用XAML标记语言来编写,如果不使用XAML强大的绑定功能,实在是罪过。通过使用绑定
,可以将UI与视图模型层分离,有利于系统的维护。作为Silverlight中比较有代表型的一个控件: TreeV
iew 有着比较特殊的绑定。与一般的绑定不同,绑定到TreeView的元素之间是一个无限级联的关系。下面
是这种绑定的最简单实现过程。

1, 引用命名空间:clr­namespace: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 的数据绑定的更多相关文章

  1. Silverlight中ListBox的数据绑定

    在Silverlight中ListBox是一个非常强大的控件.总结下ListBox的绑定数据的方式. 首先,新建一个Book类, public class Book { public string B ...

  2. .net中的TreeView的数据绑定与EasyUi_tree的数据绑定

    昨天看到了.net中的TreeView,学习了一波TreeView的数据绑定,联想到EasyUi中的Tree的数据,觉得里面的逻辑差不多,就总结了一下两者的数据绑定. 前端页面和必要的JS如下 < ...

  3. Silverlight实用窍门系列:57.Silverlight中的Binding使用(二)-数据验证

    本文将简单讲述Silverlight中的Binding数据时的数据验证. NotifyOnValidationError:是否在出现异常/错误信息的时候激发BindingValidationError ...

  4. silverlight中 ComboBox绑定数据库,并获取当前选定值

    silverlight中 ComboBox绑定数据库,并获取当前选定值 在silverlight中 用combobox下拉菜单绑定数据库的方法和用DataGrid绑定数据库的方法类似. page.xa ...

  5. Silverlight中文本框添加回车事件后,换行无法清除的解决方法

    在开发Silverlight的项目中,为了更好的用户体验,我们常要给一些控件添加一些快捷键.然而,在Silverlight中当用户回车提交后,光标停留在文本框的第二行怎么也清除不掉,经过一段时间研究, ...

  6. SharePoint 2013 Silverlight中使用Net客户端对象模型

    1.创建Silverlight时,选择Silverlight 4,不要选择版本5,试了很久版本5都调用不了,自己也不知道什么原因,谷歌也没找到答案,后来尝试版本4,可以调用: 至于Host the S ...

  7. Silverlight中的TabControl如何绑定数据?重写tabcontrol和tabItem 解决绑定友好问题。可以绑定对象集合

    在 WPF 中,TabControl 可以直接将 ItemsSource 绑定数据源,见 将 TabControl 绑定到数据的示例 http://msdn.microsoft.com/zh-cn/l ...

  8. ArcGIS API for Silverlight中加载Google地形图(瓦片图)

    原文:ArcGIS API for Silverlight中加载Google地形图(瓦片图) 在做水利.气象.土地等行业中,若能使用到Google的地形图那是再合适不过了,下面就介绍如何在ArcGIS ...

  9. 在Silverlight中实施RESTful调用

    在Silverlight中实施RESTful调用:   http://book.51cto.com/art/201006/206314.htm    http://bbs.csdn.net/topic ...

随机推荐

  1. log4j配置文件详解---转

    使用步骤注意: 1. 从http://logging.apache.org/log4j/1.2/ 下载文件 2. 在src目录下加入log4j.properties,将jar包放入build -pat ...

  2. Java 理论与实践: 用弱引用堵住内存泄漏---转载

    要让垃圾收集(GC)回收程序不再使用的对象,对象的逻辑 生命周期(应用程序使用它的时间)和对该对象拥有的引用的实际 生命周期必须是相同的.在大多数时候,好的软件工程技术保证这是自动实现的,不用我们对对 ...

  3. 第二篇:R语言数据可视化之数据塑形技术

    前言 绘制统计图形时,半数以上的时间会花在调用绘图命令之前的数据塑型操作上.因为在把数据送进绘图函数前,还得将数据框转换为适当格式才行. 本文将给出使用R语言进行数据塑型的一些基本的技巧,更多技术细节 ...

  4. 通过GitHub Pages建立个人站点(详细步骤)

    1 Git简介 2 为什么使用Github Pages 3 创建Github Pages 3.1 安装git工具. 3.2 两种pages模式 3.3 创建步骤 3.4 常用命令 4 使用Jekyll ...

  5. Android(java)学习笔记238:多媒体之图片画画板案例

    1.首先我们编写布局文件activity_main.xml如下: <RelativeLayout xmlns:android="http://schemas.android.com/a ...

  6. Android Studio学习随笔-移动动画的实现

    在上一篇博客我已经讲述了三种事件的实现方法,而现在我用复用方法来实现控件的自动移动,当然要实现控件的移动,先得在activity_main.xml文件中放置一个控件,此处我放置的是一个button控件 ...

  7. Oracle数据库用户数据完整备份与恢复

    使用PLSQL-Developer工具可以快速便捷地完成Oracle数据库用户.表的备份恢复. Oracle数据库用户数据完整备份与恢复 1. 备份 1.1   PL/SQL->工具->导 ...

  8. 转载:C#中&与&&的区别

    原文地址:http://www.cnblogs.com/chinafine/archive/2009/02/17/1392309.html   感谢博主分享! 二元运算符 (&) 为整型和 b ...

  9. (转)如何将ecshop首页主广告位的flash轮播替换为js轮播

    转之--http://www.ecshoptemplate.com/article-1710.html 这个ecshop很常见,因为现在比起flash难以修改,js更加符合人们的使用习惯,而默认ecs ...

  10. 启动php-fpm时报错

    [root@localhost ~]# /usr/local/php/sbin/php-fpm [06-Aug-2012 19:17:53] ALERT: [pool www] pm.min_spar ...