Chinaunix首页 | 论坛 | 博客
  • 博客访问: 165884
  • 博文数量: 36
  • 博客积分: 2160
  • 博客等级: 大尉
  • 技术积分: 382
  • 用 户 组: 普通用户
  • 注册时间: 2007-03-27 01:48
个人简介

喝喝咖啡,做做开发

文章分类
文章存档

2014年(4)

2013年(1)

2012年(4)

2011年(2)

2010年(3)

2009年(9)

2008年(3)

2007年(10)

我的朋友

分类: C#/.net

2014-02-19 11:11:34

书上说带有子集合的集合,可以进行多级绑定,使用多级斜线语法,看了示例,也在网上搜到了实例,实际测试却没有一个成功的,只能显示第一级的属性,也不知道哪里有问题。
示例如下:
各级对象代码

点击(此处)折叠或打开

  1. public class City
  2.     {
  3.         public string Name { get; set; }
  4.     }

  5.     public class Province
  6.     {
  7.         public string Name { get; set; }
  8.         public List<City> Cities { get; set; }
  9.     }

  10.     public class Country
  11.     {
  12.         public string Name { get; set; }
  13.         public List<Province> Provinces { get; set; }
  14.     }
绑定代码:

点击(此处)折叠或打开

  1. List<Country> countries = new List<Country>()
  2.             {
  3.                 new Country(){Name="中国", Provinces = new List<Province>()
  4.                 {new Province(){Name="四川", Cities=new List<City>(){
  5.                 new City(){Name="成都"}}}}}
  6.             };
  7. txt1.SetBinding(TextBox.TextProperty, new Binding("/Name") { Source = countries });
  8.             txt2.SetBinding(TextBox.TextProperty, new Binding("/Provinces.Name") { Source = countries });
  9.             txt3.SetBinding(TextBox.TextProperty, new Binding("/Provinces/Cities.Name") { Source = countries });

阅读(1571) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

leoncool11062017-05-19 14:33:46

近期也在研究WPF,所以从初级开始,买了一本刘铁猛的深入浅出WPF。看到第六章深入浅出话Binding的时候,也看到了这个例子,照着书上的敲了半天,发现运行不了,所以就在网上找资料,看到了你的博客。原来还有人和我一样困惑,索性就来解决一下这个问题。不知道是原著的原因还是印刷版的错误导致这个程序的错误。乍一看没什么毛病,但是细思恐惧,Provinces.Name怎么可能会成立呢,这完全是说不通,我们知道如果访问某一个对象的属性才会出现这种写法的。而Provinces是一个List集合,怎么能用集合.属性的方式访问呢,看到这里大家应该都恍然大悟了,如果要以这种方式来访问,也得是Provinces[0].Name才可以吧。起始作者起初的意思是应该Provinces/Name这样来访问。所以正确的写法应该是 
            txt1.SetBinding(TextBox.TextProperty, new Binding(\"/Name\") { Source = countries });
    &n