我有一个绑定到DataView的列表框。ListBox,DataView和DataTable.RejectChanges()
<ListBox ItemsSource="{Binding Path=Categories}" DisplayMemberPath="Name"></ListBox>
其中Categories
是类的属性继承的INotifyPropertyChanged
接口:
public class EditCategoriesPresenter : INotifyPropertyChanged
{
private DataTable _TableOfCategories;
public DataView Categories { get { return _TableOfCategories.DefaultView; } }
...
}
虽然对基础DataTable
(行插入和删除,列值的变化)的所有数据的更改会反映到列表框自动,当我做DataTable.RejectChanges()
行更改反映,但不列值更改。
我可以理解为什么会发生这种情况(DataTable.RejectChanges
没有提出任何列值更改通知),但仍找不到任何简单的解决方案来解决它。
我也在DataTable.RejectChanges()
之后加OnPropertyChanged("Categories")
,但还是没有运气。
任何想法?
预先感谢您。
非常感谢!有用!我的列表框非常简单,就像在我的XAML中一样。但你为什么提到这个?如果我将使用数据模板,这个解决方案有什么问题吗? – Dummy01 2011-05-20 10:05:16
我刚刚没有使用DisplayMemberPath =“名称”与列表框之前,我总是使用DataTemplate。但它都好:) – blindmeis 2011-05-20 10:33:02
大部分时间我也使用数据模板,但对于这个列表框这非常简单,我认为DisplayMemberPath是最简单的方法:) – Dummy01 2011-05-20 10:49:36