“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