HierarchicalDataTemplate简介
HierarchicalDataTemplate,分层数据模板,用来定义分层数据样式的模板,一般多用于MenuItem和TreeViewItem,其主要包含以下几个重要属性:
DataType :指定模板用于哪种数据类型
ItemsSource:指定该类数据的子集,即下一层显示那些数据
内容 指定数据如何显示 绑定哪个属性
数据集合
- 年级集合
//年级集合:ObservableCollection<StudentGrade> StuGradeList;
- 年级类
public class StudentGrade : NotifycationBase//年级类
{
private string _GradeName;
public string GradeName
{
get { return this._GradeName; }
set
{
this._GradeName = value;
RaisePropertyChanged(() => GradeName);
}
}
private ObservableCollection<StudentClass> _StuClassList;
public ObservableCollection<StudentClass> StudentClassList //类中包含的班级集合
{
get { return this._StuClassList; }
set
{
this._StuClassList = value;
RaisePropertyChanged(() => StudentClassList);
}
}
- 班级类
public class StudentClass : NotifycationBase
{
private string _StuClassName;
public string StuClassName
{
get { return this._StuClassName; }
set
{
this._StuClassName = value;
RaisePropertyChanged(() => StuClassName);
}
}
private ObservableCollection<StudentSCore> _StudentScoreList;
public ObservableCollection<StudentSCore> StudentScoreList
{
get { return this._StudentScoreList; }
set
{
this._StudentScoreList = value;
RaisePropertyChanged(() => StudentScoreList);
}
}
public StudentClass(string stuClassName,ObservableCollection<StudentSCore> ChildScores)
{
this.StuClassName = stuClassName;
this.StudentScoreList = ChildScores;
}
}
- 学生类
public class StudentSCore
{
[StudentClassManage("姓名")]
public string StuName { get; set; }
}
Xaml前端
- HierarchicalDataTemplate定义(因模板是层层引用的,并且xaml是从上至下顺序读取,所以这里应注意模板定义顺序,从上至下,依次为学生->班级->年级)
<UserControl.Resources>
<!--学生模板-->
<HierarchicalDataTemplate x:Key="StudentDataTemplate">
<StackPanel Orientation="Horizontal">
<Image Source="/StudentMS;component/Resources/ICON.ICO" Width="10"/>
<TextBlock Text="{Binding StuName}" FontSize="14" Margin="5 1 1 0"/>
</StackPanel>
</HierarchicalDataTemplate>
<!--班级模板-->
<HierarchicalDataTemplate x:Key="StuClassDataTemplate"
ItemsSource="{Binding StudentScoreList}"
ItemTemplate="{StaticResource StudentDataTemplate}">
<StackPanel Orientation="Horizontal">
<Image Source="/StudentMS;component/Resources/student.ico" Width="15"/>
<TextBlock Text="{Binding StuClassName}" FontSize="16" Margin="5 1 1 0"/>
</StackPanel>
</HierarchicalDataTemplate>
<!--年级模板-->
<HierarchicalDataTemplate x:Key="StuGradeDataTemplate" DataType="StudentClass"
ItemsSource="{Binding StudentClassList}"
ItemTemplate="{StaticResource StuClassDataTemplate}">
<StackPanel Orientation="Horizontal">
<Image Source="/StudentMS;component/Resources/treeitem.png" Width="15"/>
<TextBlock Text="{Binding GradeName}" FontSize="18" Margin="5 1 1 0"/>
</StackPanel>
</HierarchicalDataTemplate>
</UserControl.Resources>
- TreeView的 ItemsSource和ItemTemplate设定
<TreeView x:Name="gradeTree"
ItemsSource="{Binding StuGradeList}"
ItemTemplate="{StaticResource StuGradeDataTemplate}" />
效果

这篇博客介绍了在WPF中使用HierarchicalDataTemplate进行数据分层绑定的方法,用于开发学生成绩管理工具。内容包括HierarchicalDataTemplate的基本概念、数据集合的组织结构(年级、班级、学生)以及对应的Xaml前端实现,最终展示出了实现的效果。
4万+

被折叠的 条评论
为什么被折叠?



