这就是完整的错误消息我得到: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
始终出现此错误,当我点击/从我选择的学生在pupilListDataGrid选择与schoolclasses列表框。
这开始发生时,我改变了我的信息库加载技术,从预先加载到延迟加载。
我SelectedSchoolclass变化,然后我加载根据学生 我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是设置为SELECTED学校课程的所有学生。 我不需要IsSynchronizedItem的东西,因为我没有真正的聚合数据,因为新的延迟加载实体只是通过父实体的id。
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任何学生一个schoolclass因为我的ObservableCollection是懒洋洋地只有当我从数据库中获取数据时创建的方式,否则PupilListViewModel_Collection是NULL。
嗯,我想坚持与延迟加载,并不需要像DataGrid_ItemsSource = SchoolclassList/PupilList我用于预先加载结合层次。
我该如何摆脱这种异常?
与返回的空列表的问题(计数= 0),每次我selectd相同schoolclass和学生被添加它们被添加两次,三次,四次,我有我的许多datagrid_pupilList双实体。当然,我可以在SchoolclassViewModel中为学生创建一个我刚刚做的集合,但我仍然得到这个错误...呃那是奇怪的,在我刚刚完成所有这些重复数据之前的几个小时工作...非常奇怪。 – Elisabeth 2011-01-07 21:43:25