0

私は、完全な WPF 初心者として、HumanResources.EmplpoyeeEF 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;
}

私がしていないこと、または間違っていることは何ですか?

4

1 に答える 1