首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

“TreeView”是怎么绑定资源的?看不懂

2012-07-20 
“TreeView”是怎样绑定资源的???看不懂啊“TreeView”是怎样绑定资源的???看不懂啊。XAML:UserControl.Resour

“TreeView”是怎样绑定资源的???看不懂啊
“TreeView”是怎样绑定资源的???看不懂啊。

XAML:

  <UserControl.Resources>
  <my1:RadTreeViewSampleData x:Key="DataSource"/>

  问题一:“RadTreeViewSampleData”是一个“.cs 类”,定义在资源里面是什么意思???是不是这样定义,就可以不用再“Binding”类了,直接绑定资源就好了,是吧???

  <DataTemplate x:Key="Team">
  <TextBlock Text="{Binding Name}" />
  </DataTemplate>

  问题二:“DataTemplate”是“TreeView”的“Item”的数据模板对吧???它为什么只作用于最后一级子节点(第三级)呢???

  <telerik:HierarchicalDataTemplate x:Key="Division" ItemTemplate="{StaticResource Team}"
  ItemsSource="{Binding Teams}">
  <TextBlock Text="{Binding Name}" />
  </telerik:HierarchicalDataTemplate>

  问题三:“HierarchicalDataTemplate” 的作用是什么呢??? 不用“子节点”逐级递归绑定,只要使用“Hierarchical”这一层子节点就绑定了,Why???

  问题四:“StaticResource”是什么意思???“Team”是一个“.cs 类”,为什么可以作为资源???

  <telerik:HierarchicalDataTemplate x:Key="League" ItemTemplate="{StaticResource Division}"
  ItemsSource="{Binding Divisions}">
  <TextBlock Text="{Binding Name}" />
  </telerik:HierarchicalDataTemplate>
  </UserControl.Resources>
  <Grid x:Name="LayoutRoot" Background="White">
  <telerik:RadTreeView IsOptionElementsEnabled="True" ItemsOptionListType="CheckList" 
  ItemsSource="{Binding Source={StaticResource DataSource}, Path=LeaguesDataSource}"
  ItemTemplate="{StaticResource League}" IsLineEnabled="True" />

  问题五:“Binding Source={StaticResource DataSource}, Path=LeaguesDataSource”这一句什么意思??? “Source”表示什么? “Path”表示什么? “DataSource”表示的是“RadTreeViewSampleData 类”, “LeaguesDataSource”是“RadTreeViewSampleData 类”的一个属性。

  </Grid>

  问题六:这种数据绑定方式,没有使用“递归算法”,也没有使用“DataContext”。它的核心思想是什么呢???



.CS后台代码:

   

   
public class RadTreeViewSampleData
  {
  public RadTreeViewSampleData()
  {
  this.InitializeLeaguesDataSource();
  }
  public ObservableCollection<League> LeaguesDataSource
  {
  get;
  set;
  }
  private void InitializeLeaguesDataSource()
  {
  this.LeaguesDataSource = new ObservableCollection<League>();
  League l;
  Division d;
  this.LeaguesDataSource.Add(l = new League("XX大学"));
  l.Divisions.Add((d = new Division("X1校区")));
  d.Teams.Add(new Team("X1楼"));
  d.Teams.Add(new Team("综合楼"));
  d.Teams.Add(new Team("图书馆"));
  d.Teams.Add(new Team("逸夫楼"));
  d.Teams.Add(new Team("南楼"));
  l.Divisions.Add((d = new Division("X2校区")));
  d.Teams.Add(new Team("行政中心楼"));
  d.Teams.Add(new Team("能源工程楼"));
  d.Teams.Add(new Team("X2图书馆"));
  d.Teams.Add(new Team("教学A楼"));
  d.Teams.Add(new Team("教学B楼"));
  l.Divisions.Add((d = new Division("X3校区")));
  d.Teams.Add(new Team("X3南大楼"));
  d.Teams.Add(new Team("X3北大楼"));


  d.Teams.Add(new Team("X3东大楼"));
  d.Teams.Add(new Team("X3综合楼"));

  }
  }



  public class League
  {
  public League(string name)
  {
  this.Name = name;
  this.Divisions = new ObservableCollection<Division>();
  }
  public string Name
  {
  get;
  set;
  }
  public ObservableCollection<Division> Divisions
  {
  get;
  set;
  }
  }

  public class Division
  {
  public Division(string name)
  {
  this.Name = name;
  this.Teams = new ObservableCollection<Team>();
  }
  public string Name
  {
  get;
  set;
  }
  public ObservableCollection<Team> Teams
  {
  get;
  set;
  }
  }


  public class Team
  {
  public Team(string name)
  {
  this.Name = name;
  }
  public string Name
  {
  get;
  set;
  }
  }



谢谢了,自己对“XAML”中的“模板和资源”理解的不是很透彻。。。谢谢了。。。

   






[解决办法]
http://www.cnblogs.com/08shiyan/archive/2010/09/21/1832739.html
[解决办法]
问题太多了,我回答一下前面2个吧,
其他的问题下楼继续.....

 问题一:“RadTreeViewSampleData”是一个“.cs 类”,定义在资源里面是什么意思???是不是这样定义,就可以不用再“Binding”类了,直接绑定资源就好了,是吧???
======================
定义在资源里面就可以当一般的资源使用了,
你下面也用到了:
ItemsSource="{Binding Source={StaticResource DataSource}, Path=LeaguesDataSource}"
它和Binding类没有关系,就是一资源,资源怎么用,这个就怎么用
比较常用就是静态资源:
StaticResource DataSource
动态资源用的很少


<DataTemplate x:Key="Team">
<TextBlock Text="{Binding Name}" />
</DataTemplate>
问题二:“DataTemplate”是“TreeView”的“Item”的数据模板对吧???它为什么只作用于最后一级子节点(第三级)呢???
是数据模板,但不是“TreeView”的,
也是类似资源,只不过它的Key叫"Team"而已,
只作用于最后一级子节点,
是因为只有只有最后一级子节点应用了它,
如下:
<telerik:HierarchicalDataTemplate x:Key="Division" ItemTemplate="{StaticResource Team}"
ItemsSource="{Binding Teams}">
这个Division又是其它模板的资源,层层嵌套而已


要多看看资源和数据绑定
[解决办法]
你看看这个吧。。http://www.qdv5.com/thread-1482-1-1.html

热点排行