zoukankan      html  css  js  c++  java
  • HierarchicalDataTemplateGridControl

    xaml

    <Window.DataContext>
        <local:HierarchicalWindowViewModel/>
    </Window.DataContext>
    <Window.Resources>
        <HierarchicalDataTemplate x:Key="gradetemp" DataType="{x:Type local:Grade}" ItemsSource="{Binding Students}">
            <dx:MeasurePixelSnapper>
                <StackPanel Orientation="Vertical">
                    <Label Content="{Binding Row.GradeId}"/>
                </StackPanel>
            </dx:MeasurePixelSnapper>
        </HierarchicalDataTemplate>
        <HierarchicalDataTemplate x:Key="stutemp" DataType="{x:Type local:Student}" ItemsSource="{Binding StuScore}">
            <dx:MeasurePixelSnapper>
                <StackPanel Orientation="Vertical">
                    <Label Content="{Binding Row.StuName}"/>
                </StackPanel>
            </dx:MeasurePixelSnapper>
        </HierarchicalDataTemplate>
        <HierarchicalDataTemplate x:Key="subtemp" DataType="{x:Type local:Subject}" ItemsSource="{Binding .}">
            <dx:MeasurePixelSnapper>
                <StackPanel Orientation="Horizontal">
                    <Label Content="{Binding Row.Subj}"/>
                    <Label Content="{Binding Row.Score}"/>
                </StackPanel>
            </dx:MeasurePixelSnapper>
        </HierarchicalDataTemplate>
    
        <local:SpamRuleHierarchicalDataTemplateSelector x:Key="templateSelector" 
                GradeTemplate="{StaticResource gradetemp}" 
                StuTemplate="{StaticResource stutemp}" 
                SubTemplate="{StaticResource subtemp}" />
    </Window.Resources>
    <Grid>
        <dxg:GridControl x:Name="treeList" ItemsSource="{Binding Grades}" >
            <dxg:GridControl.View>
                <dxg:TreeListView x:Name="view" TreeDerivationMode="HierarchicalDataTemplate"
                                    DataRowTemplateSelector="{StaticResource templateSelector}"
                                    AllowEditing="True" NavigationStyle="Cell" />
            </dxg:GridControl.View>
        </dxg:GridControl>
    </Grid>

    model.cs

    class HierarchicalWindowViewModel
    {
        public List<Grade> Grades { get; set; }
    
        public HierarchicalWindowViewModel()
        {
            Grades = new List<Grade>();
            List<Student> students = new List<Student>();
            for (int i = 0; i < 20; i++)
            {
                students.Add(new Student
                {
                    StuName = $"Name{i}",
                    StuScore = new List<Subject>
                    {
                        new Subject{Subj = "math", Score = 66},
                        new Subject{Subj = "cs", Score = 77},
                    }
                }); ;
            }
    
            for (int i = 0; i < 5; i++)
            {
                Grades.Add(new Grade
                {
                    GradeId = $"Grade{i}",
                    Students = students
                });
            }
        }
    }
    
    class Grade
    {
        public string GradeId { get; set; }
        public List<Student> Students { get; set; }
    }
    
    class Student
    {
        public string StuName { get; set; }
        public List<Subject> StuScore { get; set; }
    }
    
    class Subject
    {
        public string Subj { get; set; }
        public int Score { get; set; }
    }
    
    class SpamRuleHierarchicalDataTemplateSelector : DataTemplateSelector
    {
        public HierarchicalDataTemplate GradeTemplate { get; set; }
        public HierarchicalDataTemplate StuTemplate { get; set; }
        public HierarchicalDataTemplate SubTemplate { get; set; }
    
        public override DataTemplate SelectTemplate(object item, DependencyObject container)
        {
            RowData treeRowData = item as RowData;
            if (treeRowData == null || treeRowData.Row == null)
            {
                return null;
            }
    
            if (treeRowData.Row is Grade)
            {
                return GradeTemplate;
            }
    
            if (treeRowData.Row is Student)
            {
                return StuTemplate;
            }
    
            if (treeRowData.Row is Subject)
            {
                return SubTemplate;
            }
    
            return null;
        }
    }
    把圈子变小,把语言变干净,把成绩往上提,把故事往心里收,现在想要的以后你都会有。
  • 相关阅读:
    QUBIC 双聚类学习以及代码编写运行
    ICPC NEAU Programming Contest 2020 A.盘他!题解
    CodeForces
    牛客练习赛64 A-D题解
    论文阅读1:QUBIC2 A novel and robust biclustering algorithm for analyses
    Educational Codeforces Round 87 (Rated for Div. 2)
    MinGW安装教程(make安装教程)解决cmd中make不是内部命令的问题
    “科大讯飞杯”第18届上海大学程序设计联赛春季赛暨高校网络友谊赛 A-L 解题报告
    “科大讯飞杯”第18届上海大学程序设计联赛春季赛暨高校网络友谊赛 A-L 解题报告
    spark2.4+elasticsearch6.1.1搭建一个推荐系统
  • 原文地址:https://www.cnblogs.com/jizhiqiliao/p/15727591.html
Copyright © 2011-2022 走看看