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
(グリッドのすべてのセルは編集可能です。ユーザーが [保存] ボタンをクリックすると、すべてのデータが DB に保存されます)。問題は、最近の学位をコンボボックスにバインドすることです。私はこの方法を試しました:
<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
コードビハインドでバインドされています。