2011-01-07 2 views
1

에 대상에서 값을 저장할 수 없습니다 내가 얻을 :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와 같은 바인딩 계층을 필요로하지 않는다.

어떻게 그 예외를 없앨 수 있습니까?

답변

0

NULL 대신 적절한 유형의 빈 목록을 반환 할 수 있어야합니다. 그러나 귀하의 게시물에는 확실하게 알 수있는 정보가 충분하지 않습니다.

+0

빈 목록 (count = 0)을 반환 할 때의 문제는 동일한 schoolclass를 모두 선택하고 학생이 추가되면 두 번, 세 번, 네 번 추가되고 내 datagrid_pupilList에 여러 개의 이중 엔터티가 추가된다는 것입니다. 물론 방금 SchoolclassViewModel에서 학생들을위한 컬렉션을 만들 수 있습니다. 방금 전이 오류가 발생했습니다 ... hm thats 이상한 일은 몇 시간 전에 작업 했었습니다. – Elisabeth