【发布时间】:2012-11-10 19:11:33
【问题描述】:
我有 academic lectrurers 集合,它是使用 Entity Framework 从数据库中获取的。
Lecturers 是LecturerListViewModel 中的一个属性:
public ObservableCollection<Lecturer> Lecturers { get; set; }
Lecturer 是来自数据库逆向工程的类:
public class Lecturer
{
public Lecturer()
{
}
public int Id_Lecturer { get; set; }
public string Name { get; set; }
public int? Academic_Degree_Id { get; set; }
public virtual AcademicDegree AcademicDegree { get; set; } // lazy loading
}
我想在DataGrid 中显示数据库中的所有讲师(网格的所有单元格都是可编辑的;当用户单击保存按钮时,所有数据都将保存在数据库中)。
问题是将最近的学位绑定到组合框。我试过这样:
<StackPanel d:DataContext="{d:DesignInstance Type=ViewModel:LecturerListViewModel}">
<DataGrid AutoGenerateColumns="False" ItemsSource="{Binding Lecturers}" HeadersVisibility="Column">
<DataGrid.Columns>
<DataGridTextColumn Header="Name" Binding="{Binding Name}" />
<DataGridTemplateColumn Header="Academic degree">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<!-- PROBLEM HERE. SelectedItem="{Binding AcademicDegree}" doesn't work -->
<ComboBox SelectedItem="{Binding AcademicDegree}" ItemsSource="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}, Path=DataContext.AcademicDegrees}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
<Button Content="Add" HorizontalAlignment="Center" Width="100" Margin="15" Name="AddLecturerButton" />
</StackPanel>
ItemsSource="{Binding Lecturers}" 绑定正确。点击checkbox后有列表。但是程序启动后,checkboxes 中的值是空的。为什么?我该如何解决?
PS。 LecturerListViewModel 绑定在代码隐藏中。
【问题讨论】:
标签: wpf entity-framework binding lazy-loading selecteditem