【发布时间】:2014-11-25 15:50:31
【问题描述】:
我有一个DataGrid 的Person 对象,另一个DataGrid 在它的RowDetailsTemplate 中包含所选人员的工作,我使用EntityFramework 生成DataContext,每个人至少有一个作业(因此 Person 包含指向另一个类型为 PersonWork 的对象的外键)。
为了使用selectedPerson's 作品填充RowDetails DataGrid,我将其(RowDetailsTemplate)itemSource 绑定到Person 类(由EF 生成)的导航属性,但@987654333 @网格总是空的! (当我使用包含记录的即时窗口检查 SelectedPerson.PersonWork 时)
这里是我使用的Xaml 代码:
<DataGrid Style="{StaticResource DataGridStyle}" AutoGenerateColumns="False" EnableRowVirtualization="True" ItemsSource="{Binding ListPersons}" SelectedItem="{Binding SelectedPerson,Mode=TwoWay}" >
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding PersonName}" Header="Name" Width="SizeToHeader" MinWidth="100"/>
<DataGridTextColumn Binding="{Binding PersonAge}" Header="Age" Width="SizeToHeader" MinWidth="100"/>
</DataGrid.Columns>
<DataGrid.RowDetailsTemplate>
<DataTemplate >
<DataGrid Height="100" AutoGenerateColumns="False" EnableRowVirtualization="True" ItemsSource="{Binding Path=SelectedPerson.PersonWorks}">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding WorkID}" Header="WorkID" Width="SizeToHeader" MinWidth="100"/>
<DataGridTextColumn Binding="{Binding WorkTitle}" Header="Title" Width="SizeToHeader" MinWidth="100"/>
<DataGridTextColumn Binding="{Binding WorkRecommandation}" Header="Recommandation" Width="SizeToHeader" MinWidth="300"/>
</DataGrid.Columns>
</DataGrid>
</DataTemplate>
</DataGrid.RowDetailsTemplate>
</DataGrid>
EF 生成的 Class Person 看起来像这样:
public partial class Person
{
public Person()
{
this.PersonWorks = new HashSet<PersonWorks>();
}
public long PersonId { get; set; }
public string PersonName { get; set; }
public long PersonAge { get; set; }
public virtual ICollection<PersonWork> PersonWorks { get; set; }
}
Ps:我使用的是 EF 6.1.1
更新
ListPersons 是ObservableCollection,它的实例化如下:
var _dbContext=new DBEntities();
ListPersons= new ObservableCollection<Person>(_dbContext.Persons);
【问题讨论】:
标签: c# wpf entity-framework wpfdatagrid