我曾经认为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; }
}
}
如何让DataGrid显示嵌套产品的名称?
答案 0 :(得分:0)
问题是延迟加载,所以我需要在我的Repository.Storages()方法中添加一个Include语句,如下所示:
return ctx.Storages.Include(s => s.Product).ToList();
我还需要添加
using System.Data.Entity;
这样我就可以使用lambda
获得Include扩展方法