将相关实体绑定到数据网格

时间:2016-05-31 11:30:58

标签: c# wpf xaml datagrid viewmodel

我正在使用Entity Framework 6.1。在我的模型中,有两个实体国家/地区地区。为:

public class Country
{
    public Country()
    {
        Districts = new HashSet<District>();
    }

    public int CountryId { get; set; }
    public string CountryArabicName { get; set; }
    public string CountryEnglishName { get; set; }
    public string NationalityArabicName { get; set; }
    public string NationalityEnglishName { get; set; }

    public virtual ICollection<District> Districts { get; private set; }
}

public class District
{
    public int DistrictId { get; set; }
    public int CountryId { get; set; }
    public string DistrictArabicName { get; set; }
    public string DistrictEnglishName { get; set; }
    public Country Country { get; set; }
}

所以,国家有很多省份。

在我的ViewModel中:

private IEnumerable<District> _districts;
public IEnumerable<District> Districts
{
    get { return _districts; }
    set { SetProperty(ref _districts, value); }
}

然后,填写它:

Districts =  (from district in cmsDbContext.Districts
                orderby district.DistrictId
                select district).ToList();

在视图中:

<UserControl.DataContext>
    <vm:DistrictVm/>
</UserControl.DataContext>

<DataGrid Height="308" AutoGenerateColumns="False" ItemsSource="{Binding Districts}">
        <DataGrid.Columns>
            <DataGridTextColumn Binding="{Binding Path=DistrictArabicName}" Header="District" IsReadOnly="True"/>
            <DataGridTextColumn Binding="{Binding Path=Country.CountryArabicName}" Header="Country" IsReadOnly="True" />
        </DataGrid.Columns>
 </DataGrid>

现在, DistrictArabicName 显示正确。但 Country.CountryArabicName

没有任何内容

我该怎么做才能解决这个问题?我想检索 Country.CountryArabicName

1 个答案:

答案 0 :(得分:0)

感谢Kylo Ren。

我为解决问题所做的工作: - 删除虚拟以禁用延迟加载。数据太小。少于20条记录。 - 删除所有迁移和数据库。 - 再次重新启用迁移,并更新数据库。

现在,我的例子正在运作。