我有学术造型师从数据库中使用实体框架获取的集合。DataGridTemplateColumn中的绑定
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
显示所有从数据库中的讲师(的所有单元该网格是可编辑的;当用户点击保存按钮的所有数据将是s在数据库中存储)。 问题在于最近的学位对组合框的约束。我试过这种方式:
<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
绑定在代码隐藏中。
嘿!绑定到'Name'即使没有实现'INotifyPropertyChanged'也能工作。只是'ComboBox'不能正常工作。我已将“Lecturer”类更改为[此版本](http://wklej.org/id/867503/),但“ComboBoxes”中仍然没有选定的值。怎么了? –
@ patryk.beza:有太多的事情可以* *是错误的,通知只是其中最常见的原因... –