日期:2014-05-18  浏览次数:20757 次

“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