에 대상에서 값을 저장할 수 없습니다 내가 얻을 :WPF : 전체 오류 메시지 그게 전부 다시 소스
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
이 오류는 항상 내가 클릭 할 때 /를 schoolclasses와 목록 상자에 pupilListDataGrid 내 선택 학생을 선택할 발생 .
리포지토리 로딩 기술을 Eager 로딩에서 Lazy 로딩으로 변경했을 때 시작되었습니다. 여기
<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은 다음과 같습니다
내 SelectedSchoolclass 변경
는 그때 그때 PupilListView.xaml이있는 해당하는 문서로드에 따라 학생들에게 내 SelectedPupil 변경을로드 SELECTED schoolclass에서 모든 학생을 설정합니다. 부모 엔티티의 ID를 통해 새 게으른 로딩 엔티티로 인해 실제로 데이터를 집계하지 않았기 때문에 IsSynchronizedItem 항목이 필요하지 않습니다.
AdminViewMOdel : 내가 선택한 문서 또는 학생에서 점프하고 NULL에 결합 어떤 학생이없는 schoolclass을 선택하면
내 ObservableCollection에가 느리게하기 때문에 :
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;
}
나는 문제는 다음과 같은 추측 데이터베이스에서 데이터를 가져올 때만 PupilListViewModel_Collection이 NULL임을 의미합니다.
글쎄 나는 Lazy 로딩을 고수하고 DataGrid_ItemsSource = SchoolclassList/PupilList와 같은 바인딩 계층을 필요로하지 않는다.
어떻게 그 예외를 없앨 수 있습니까?
빈 목록 (count = 0)을 반환 할 때의 문제는 동일한 schoolclass를 모두 선택하고 학생이 추가되면 두 번, 세 번, 네 번 추가되고 내 datagrid_pupilList에 여러 개의 이중 엔터티가 추가된다는 것입니다. 물론 방금 SchoolclassViewModel에서 학생들을위한 컬렉션을 만들 수 있습니다. 방금 전이 오류가 발생했습니다 ... hm thats 이상한 일은 몇 시간 전에 작업 했었습니다. – Elisabeth