我有學術造型師從數據庫中使用實體框架獲取的集合。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:有太多的事情可以* *是錯誤的,通知只是其中最常見的原因... –