WPF Datagrid嵌套属性 - 显示为空

时间:2016-12-18 13:19:41

标签: c# wpf xaml datagrid

我曾经认为WPF支持带有。的嵌套属性,但不知何故它显示为空 这是我的XAML:

<DataGrid x:Name="storageGrid" HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top" AutoGenerateColumns="False" Height="351" Width="643">
                        <DataGrid.Columns>
                        <DataGridTextColumn Header="Name" Binding="{Binding Product.Name}" Width="100" />
                        <DataGridTextColumn Header="Quantity" Binding="{Binding Quantity}" Width="100" />
                        </DataGrid.Columns>
                    </DataGrid>

加载表单时,我调用InitializeData方法,如下所示:

    public void InitializeData()
    {
        storageGrid.Items.Clear();

        var dbStorages = Repository.Storages();
        foreach (var storage in dbStorages)
        {
            Storages.Add(storage);
        }
        storageGrid.ItemsSource = Storages;
        storageGrid.Items.Refresh();

    }

存储是本地List属性。我正在使用Entity Framework Databse First类,这里是存储定义:

public partial class Storage
{
    public Nullable<int> ProductId { get; set; }
    public Nullable<int> Quantity { get; set; }
    public Nullable<int> RoomId { get; set; }
    public int EntryId { get; set; }

    public virtual Product Product { get; set; }
    public virtual Room Room { get; set; }
}
}

当我启动应用程序时,这是我看到的图片: WPF DataGrid shows the property correctly, but the nested property is empty

如何让DataGrid显示嵌套产品的名称?

1 个答案:

答案 0 :(得分:0)

问题是延迟加载,所以我需要在我的Repository.Storages()方法中添加一个Include语句,如下所示:

return ctx.Storages.Include(s => s.Product).ToList();

我还需要添加

using System.Data.Entity;

这样我就可以使用lambda

获得Include扩展方法