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;
        }
    }
    把圈子变小,把语言变干净,把成绩往上提,把故事往心里收,现在想要的以后你都会有。
  • 相关阅读:
    Log4net源码分析(一)
    ASP.NET MVC 框架是 .NET 平台 Web 开发的主流,但是并不适合初学者
    详解ASP.NET MVC应用程序请求生命周期
    ELMAH (ASP.NET错误日志处理)使用方法
    ElMAH(ASP.NET错误日志记录与通知)系列文章基础应用篇
    Log4net源码分析(三)
    Log4net 框架系列:log4net日志文件在asp.net中的应用实例记录系统错误
    ELMAH(ASP.NET错误日志记录与通知)系列文章概念篇
    Log4net源码分析(二)
    在VS2010中配制Elmah邮件发送到Gmail
  • 原文地址:https://www.cnblogs.com/jizhiqiliao/p/15727591.html
Copyright © 2011-2022 走看看