0
我想 - 作爲一個完整的WPF小白 - 創建一個綁定「樹視圖」的分層數據,使用HumanResources.Emplpoyee
表了AdventureWorks數據庫中,通過EF 5碼第一位。下面舉一些例子,我想出了以下內容,運行時會產生一個完全空白的MainWindow
。我的TreeView在哪裏?
<Window x:Class="FlatTree.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:models="clr-namespace:AdventureWorks.Models;assembly=AdventureWorks"
Title="MainWindow" Height="350" Width="525">
<Grid>
<TreeView DataContext="{Binding}" ItemsSource="{Binding Employees}">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Subordinates}" DataType="{x:Type models:Employee}">
<TreeViewItem Header="{Binding Title}"/>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
</Grid>
</Window>
和:
public partial class MainWindow : Window
{
public IEnumerable<Employee> Employees { get; set; }
public MainWindow()
{
InitializeComponent();
var ctx = new AdventureWorksContext();
Employees = TreeBuilder.BuildEmployeeTree(ctx.Employees);
}
}
BuildEmployeeTree
作品,並打開僱員實體的名單,與他們ManagerId
和Subordinates
(從Employee1
重命名)特性,成樹模型,就像這樣:
public static IEnumerable<Employee> BuildEmployeeTree(IEnumerable<Employee> employees)
{
var flatTree = employees.ToList();
foreach (var emp in employees)
{
if (emp.ManagerID != null)
{
var manager = flatTree.Single(e => e.EmployeeID == emp.ManagerID);
manager.Subordinates.Add(emp);
}
}
return flatTree;
}
什麼我沒有做,或者做錯了什麼?