私は、完全な WPF 初心者として、HumanResources.Emplpoyee
EF 5 Code First を介して、AdventureWorks DB のテーブルを使用して、階層データ バインド 'TreeView' を作成しようとしています。いくつかの例をたどった後、MainWindow
実行すると完全に空白になる次のようになりました。
<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;
}
私がしていないこと、または間違っていることは何ですか?