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;
        }
    }
    把圈子变小,把语言变干净,把成绩往上提,把故事往心里收,现在想要的以后你都会有。
  • 相关阅读:
    CSRF攻击与防御
    別惹我
    单系统登录机制SSO
    jdk8- list操作
    mybatis--Mapper 常见报错总结(持续总结)
    死锁排查的小窍门 --使用jdk自带管理工具jstack
    oracle笔记--查询10条之后记录的数据
    zookeeper集群操作【这里只说明简单的操作步骤,zk的相关参数、说明请参考官方文档】
    利用jquery操作隐藏table某一列
    关于python3.X 报"import urllib.request ImportError: No module named request"错误,解决办法
  • 原文地址:https://www.cnblogs.com/jizhiqiliao/p/15727591.html
Copyright © 2011-2022 走看看