TreeView数据绑定

http://www.cnblogs.com/deerchao/archive/2008/05/08/1188378.html

 

using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents; using System.Windows.Media;
using System.Windows.Shapes;
using System.Collections.ObjectModel;
using System.Collections.Generic;


namespace SDKSample
{
   
public class League
    {
       
public League(string name)
        {
            _name
= name;
            _divisions
= new List<Division>();
        }


       
string _name;

       
public string Name { get { return _name; } }

        List
<Division> _divisions;
       
public List<Division> Divisions { get { return _divisions; } }

    }
   
public class Division
    {
       
public Division(string name)
        {
            _name
= name;
            _teams
= new List<Team>();

        }

       
string _name;

       
public string Name { get { return _name; } }

        List
<Team> _teams;

       
public List<Team> Teams { get { return _teams; } }

    }

   
public class Team
    {
       
public Team(string name)
        {
            _name
= name;
        }

       
string _name;

       
public string Name { get { return _name; } }
    }

   
public class ListLeagueList : List<League>
    {
       
public ListLeagueList()
        {
            League l;
            Division d;

            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"));
            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"));
        }

       
public League this[string name]
        {
           
get
            {
               
foreach (League l in this)
                   
if (l.Name == name)
                       
return l;

               
return null;
            }
        }


    }
}

<Window x:Class="SDKSample.Window1"
  xmlns
="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x
="http://schemas.microsoft.com/winfx/2006/xaml"
  Title
="HierarchicalDataTemplate Sample"
  xmlns:src
="clr-namespace:SDKSample">
 
<DockPanel>
   
<DockPanel.Resources>
     
<ObjectDataProvider x:Key="MyList" ObjectType="{x:Type src:ListLeagueList}"/>

     
<HierarchicalDataTemplate DataType    = "{x:Type src:League}"
                                ItemsSource
= "{Binding Path=Divisions}">
       
<TextBlock Text="{Binding Path=Name}"/>
     
</HierarchicalDataTemplate>

     
<HierarchicalDataTemplate DataType    = "{x:Type src:Division}"
                                ItemsSource
= "{Binding Path=Teams}">
       
<TextBlock Text="{Binding Path=Name}"/>
     
</HierarchicalDataTemplate>

     
<DataTemplate DataType="{x:Type src:Team}">
       
<TextBlock Text="{Binding Path=Name}"/>
     
</DataTemplate>
   
</DockPanel.Resources>

   
<Menu Name="menu1" DockPanel.Dock="Top" Margin="10,10,10,10">
       
<MenuItem Header="My Soccer Leagues"
                  ItemsSource
="{Binding Source={StaticResource MyList}}" />
   
</Menu>

   
<TreeView>
     
<TreeViewItem ItemsSource="{Binding Source={StaticResource MyList}}" Header="My Soccer Leagues" />
   
</TreeView>

 
</DockPanel>
</Window>

 

<local:PeopleList x:Key="peopleList"/>
        <DataTemplate x:Key="treeviewItemStyle" DataType="{x:Type local:People}">
            <StackPanel Orientation="Horizontal">
                <TextBlock Text=" Name: "/>
                <TextBlock Background="Azure" Text="{Binding Path=Name}"/>
                <TextBlock Text=" | Age: "/>
                <TextBlock Background="Yellow" Text="{Binding Path=Age}"/>
            </StackPanel>
        </DataTemplate>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值