Wpf 添加新行后,为什么不';我的绑定控件没有更新吗?

Wpf 添加新行后,为什么不';我的绑定控件没有更新吗?,wpf,drag-and-drop,dataset,binding,collectionviewsource,Wpf,Drag And Drop,Dataset,Binding,Collectionviewsource,我正在使用wpf拖放数据绑定到数据集。我使用BindingListCollectionView的AddNew方法生成一个新的datatable行。我在新行上设置值,并在BindingListCollectionView上调用CommitNew我希望在绑定控件中看到我指定的值,但这些值都是空的。如果我将更改保存到数据库中,则会更新控件,但我希望用户在调用TableAdapterManager上的UpdateAll之前看到我指定的值 背景: 我在一个独立于wpf应用程序的项目中创建了一个强类型数据集

我正在使用wpf拖放数据绑定到数据集。我使用BindingListCollectionView的AddNew方法生成一个新的datatable行。我在新行上设置值,并在BindingListCollectionView上调用CommitNew我希望在绑定控件中看到我指定的值,但这些值都是空的。如果我将更改保存到数据库中,则会更新控件,但我希望用户在调用TableAdapterManager上的UpdateAll之前看到我指定的值

背景:
我在一个独立于wpf应用程序的项目中创建了一个强类型数据集。我的wpf应用程序引用数据集应用程序。我在wpf应用程序中添加了一个指向类型化数据集的对象数据源。我将字段/控件从datasources窗口拖到wpf designer窗口。生成的xaml包含一个Window.Resources部分,其中CollectionViewSource精确绑定到我的dataset和datatable。此CollectionViewSource是我拖到设计图面上的控件的DataContext。所有控件都使用双向数据绑定

加载窗口时,我获取对xaml的CollectionViewSource的引用(使用FindResource)。然后获取对CollectionViewSource的view属性的引用,并将其转换为BindingListCollectionView。现在,我使用BindingListCollectionView的AddNew方法生成一个新行(AddNew作为对象返回)。我将对象强制转换为DataRowView并访问其Row属性。然后,我将该行转换为强类型datatable行(由DataSet设计器生成)。现在我为一些datatable行列赋值。我在BindingListCollectionView上调用CommitNew。最后,我在CollectionViewSource上调用MoveCurrentToFirst

问题:
使用watch表达式,我可以看到数据位于CollectionView和BindingListCollectionView的SourceCollection中有人能解释为什么绑定控件不显示数据,除非我将更改保存到数据库吗?

代码(未显示生成的XAML):


简单的修复方法是在调用CommitNew之后调用BindingListCollectionView的刷新方法

_blcvScanData.Refresh()
我通过intellisense偶然发现了我自己问题的答案。如果有人能解释为什么需要刷新,我将不胜感激。我希望INotifyPropertyChange接口能够更新绑定控件,从而无需调用refresh

_blcvScanData.Refresh()