Это полное сообщение об ошибке, которое я получаю:
System.Windows.Data Error: 8 : Cannot save value from target back to source. BindingExpression:Path=SelectedPupil; DataItem='AdministrationViewModel' (HashCode=52357250); target element is 'DataGrid' (Name=''); target property is 'SelectedItem' (type 'Object') NullReferenceException:'System.NullReferenceException
Эта ошибка всегда возникает, когда я щелкаю / выбираю из своего выбранного ученика в pupilListDataGrid в ListBox со школьными классами.
Этоначал происходить, когда я изменил свою технику загрузки из репозитория с Eager loading на Lazy loading.
Мой SelectedSchoolclass меняется, затем я загружаю соответствующих учеников My SelectedPupil, затем я загружаю соответствующие документы
PupilListView.xaml:
<DataGrid
Grid.Row="1"
IsReadOnly="True"
HeadersVisibility="Column"
SelectedItem="{Binding SelectedPupil}"
ItemsSource="{Binding Path=SelectedSchoolclass.PupilListViewModel}"
AutoGenerateColumns="False"
>
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding FirstName}" Width="*" Header="Firstname" />
<DataGridTextColumn Binding="{Binding LastName}" Width="*" Header="Last name" />
</DataGrid.Columns>
</DataGrid
Здесь ItemSource установлен для всех учеников из ВЫБРАННОГО школьного класса.Мне не нужны вещи IsSynchronizedItem, потому что у меня на самом деле нет агрегированных данных из-за новых отложенных загрузочных сущностей только через идентификатор родительской сущности.
AdminViewMOdel:
public PupilViewModel SelectedPupil
{
get { return _selectedPupil; }
set
{
_selectedPupil = value;
this.RaisePropertyChanged("SelectedPupil");
GetDocumentsForPupil();
}
}
private void GetDocumentsForPupil()
{
var documentsOC = new ObservableCollection<Document>(_docRepo.GetDocumentsByPupilId(_selectedPupil.Id));
SelectedPupil.Documents.DocumentList = documentsOC;
}
Я предполагаю проблемувыглядит следующим образом:
Когда я прыгаю с выбранного документа или ученика и выбираю школьный класс без учеников, он привязывается к NULL, потому что моя ObservableCollection лениво создается, значит, только когда я получаю данные из базы данных, иначе PupilListViewModel_Collection имеет значение NULL.
Ну, я бы хотел придерживаться отложенной загрузки и не нуждаться в иерархии привязок, такой как DataGrid_ItemsSource = SchoolclassList / PupilList, которую я использовал для быстрой загрузки.
Как я могу избавиться от этого исключения?