MVVM RadTreeView 树绑定数据源

本文介绍了一种使用Silverlight和Telerik控件实现的树状视图数据展示方式,通过定义联盟(League)、区域(Division)和组(Team)三个层级的数据结构,并结合HierarchicalDataTemplate进行数据绑定,实现了多级嵌套的数据展示效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

里面有盒子套盒子的概念:

一层套一层的概念

联盟--------区域-------组

League---Division--Team

 委屈

 

<UserControl.Resources>
        <sampleData:RadTreeViewSampleData x:Key="DataSource"/>
       
        <DataTemplate x:Key="Team">
            <TextBlock Text="{Binding Name}" />


        </DataTemplate>

 

        <!--ItemTemplate="{StaticResource Team}"添加的是上面的id-->
        <telerik:HierarchicalDataTemplate x:Key="Division" ItemTemplate="{StaticResourceTeam}"
           ItemsSource="{Binding Teams}">
            <TextBlock Text="{Binding Name}" />


        </telerik:HierarchicalDataTemplate>

 

        
        <telerik:HierarchicalDataTemplate x:Key="League" ItemTemplate="{StaticResourceDivision}"
           ItemsSource="{Binding Divisions}">
            <TextBlock Text="{Binding Name}" />
      

  </telerik:HierarchicalDataTemplate>


        
    </UserControl.Resources>

 

紫色区域是下面的ID:ItemTemplate="{StaticResource League}",LeaguesDataSource是类里面的数据源

 <Grid x:Name="LayoutRoot" Background="White">
        <telerik:RadTreeView
       ItemsSource="{Binding Source={StaticResource DataSource}, Path=LeaguesDataSource}"
       ItemTemplate="{StaticResource League}" />     
    </Grid>

 

前台代码

 

<UserControl x:Class="SilverlightApplication2.cktreeview"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
   xmlns:sampleData="clr-namespace:SilverlightApplication2"
             mc:Ignorable="d"
    d:DesignHeight="300" d:DesignWidth="400"
    xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation">
    <UserControl.Resources>
        <sampleData:RadTreeViewSampleData x:Key="DataSource"/>
        
        <DataTemplate x:Key="Team">
            <TextBlock Text="{Binding Name}" />
        </DataTemplate>

        <!--ItemTemplate="{StaticResource Team}"添加的是上面的id-->
        <telerik:HierarchicalDataTemplate x:Key="Division" ItemTemplate="{StaticResource Team}"
           ItemsSource="{Binding Teams}">
            <TextBlock Text="{Binding Name}" />
        </telerik:HierarchicalDataTemplate>
        
        <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
       ItemsSource="{Binding Source={StaticResource DataSource}, Path=LeaguesDataSource}"
       ItemTemplate="{StaticResource League}" />      
    </Grid>
</UserControl>


后台套子代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.Collections.ObjectModel;

namespace SilverlightApplication2
{
    public partial class cktreeview : UserControl
    {
        public cktreeview()
        {
            InitializeComponent();
        }
        
    }
    //组
    public class Team
    {
        public Team(string name)
        {
            this.Name = name;
        }
        public string Name
        {
            get;
            set;
        }
    }

    //区域
    public class Division
    {
        public Division(string name)
        {
            this.Name = name;
            this.Teams = new ObservableCollection<Team>();
        }
        public string Name
        {
            get;
            set;
        }
        //页面绑定数据
        public ObservableCollection<Team> Teams
        {
            get;
            set;
        }
    }

    //种类(联盟)定义
    public class League
    {
        public League(string name)
        {
            this.Name = name;
            this.Divisions = new ObservableCollection<Division>();
        }
        public string Name
        {
            get;
            set;
        }
        //页面绑定
        public ObservableCollection<Division> Divisions
        {
            get;
            set;
        }
    }


    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("League A"));
            l.Divisions.Add((d = new Division("Division A")));
            d.Teams.Add(new Team("Team I"));
            d.Teams.Add(new Team("Team II"));
            d.Teams.Add(new Team("Team III"));
            d.Teams.Add(new Team("Team IV"));
            d.Teams.Add(new Team("Team V"));
            l.Divisions.Add((d = new Division("Division B")));
            d.Teams.Add(new Team("Team Blue"));
            d.Teams.Add(new Team("Team Red"));
            d.Teams.Add(new Team("Team Yellow"));
            d.Teams.Add(new Team("Team Green"));
            d.Teams.Add(new Team("Team Orange"));
            l.Divisions.Add((d = new Division("Division C")));
            d.Teams.Add(new Team("Team East"));
            d.Teams.Add(new Team("Team West"));
            d.Teams.Add(new Team("Team North"));
            d.Teams.Add(new Team("Team South"));
            this.LeaguesDataSource.Add(l = new League("League B"));
            l.Divisions.Add((d = new Division("Division A")));
            d.Teams.Add(new Team("Team 1"));
            d.Teams.Add(new Team("Team 2"));
            d.Teams.Add(new Team("Team 3"));
            d.Teams.Add(new Team("Team 4"));
            d.Teams.Add(new Team("Team 5"));
            l.Divisions.Add((d = new Division("Division B")));
            d.Teams.Add(new Team("Team Diamond"));
            d.Teams.Add(new Team("Team Heart"));
            d.Teams.Add(new Team("Team Club"));
            d.Teams.Add(new Team("Team Spade"));
            l.Divisions.Add((d = new Division("Division C")));
            d.Teams.Add(new Team("Team Alpha"));
            d.Teams.Add(new Team("Team Beta"));
            d.Teams.Add(new Team("Team Gamma"));
            d.Teams.Add(new Team("Team Delta"));
            d.Teams.Add(new Team("Team Epsilon"));
        }
    }
}


 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员敏敏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值