XAML代码
<Window x:Class="WpfApplication73.MainWindow"
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:local="clr-namespace:WpfApplication73"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<Grid>
<TreeView ItemsSource="{Binding}">
<TreeView.Resources>
<HierarchicalDataTemplate DataType="{x:Type local:Class1}" ItemsSource="{Binding Races}">
<TextBlock Text="{Binding Year}"/>
</HierarchicalDataTemplate>
<HierarchicalDataTemplate DataType="{x:Type local:F1Race}" ItemsSource="{Binding Results}">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Country}"/>
<TextBlock Text="{Binding Date,StringFormat=d}"/>
</StackPanel>
</HierarchicalDataTemplate>
<HierarchicalDataTemplate DataType="{x:Type local:F1RaceResult}">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Position}"/>
<TextBlock Text="{Binding Racer}"/>
</StackPanel>
</HierarchicalDataTemplate>
</TreeView.Resources>
</TreeView>
</Grid>
</Window>
隐藏代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace WpfApplication73
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public Formula1v2Entities data = new Formula1v2Entities();
public MainWindow()
{
InitializeComponent();
this.DataContext = Years;
}
public IEnumerable<Class1> Years
{
get
{
F1DataContext.Data = data;
return data.Races.Select(r => new Class1
{
Year = r.Date.Year
}).Distinct().OrderBy(c => c.Year).ToList();
//return (from r in data.Races
// select new Class1
// {
// Year= r.Date.Year
// }).ToList();
}
}
}
}
Class1代码,用来产生TreeView控件使用的集合
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WpfApplication73
{
public static class F1DataContext
{
public static Formula1v2Entities Data { get; set; }
}
public class Class1
{
public int Year { get; set; }
public IEnumerable<F1Race>Races
{
get
{
return (from r in F1DataContext.Data.Races
where r.Date.Year == Year
orderby r.Date
select new F1Race
{
Date = r.Date,
Country = r.Circuits.Country
}).ToList();
}
}
}
public class F1Race
{
public string Country { get; set; }
public DateTime Date { get; set; }
public IEnumerable<F1RaceResult> Results
{
get
{
return (from rr in F1DataContext.Data.RaceResults
where rr.Races.Date == this.Date
select new F1RaceResult
{
Position = rr.Position,
Racer = rr.Racers.FirstName + " " + rr.Racers.LastName
}).ToList();
}
}
}
public class F1RaceResult
{
public int Position { get; set; }
public string Racer { get; set; }
}
}
本文转自daniel8294 51CTO博客,原文链接:http://blog.51cto.com/acadia627/1737994,如需转载请自行联系原作者