wpf - INotifyPropertyChanged 或 INotifyCollectionChanged 与 DataTable 一起使用?

标签 wpf binding inotifypropertychanged inotifycollectionchanged

嗨,我对数据表有一些麻烦。所以我需要的是每当我更改绑定(bind)的 DataTable 的 DataGrid 中的任何单元格时进行检测。

怎么做呢?使用 INotifyPropertyChanged 还是使用 INotifyCollectionChanged

注意:我正在尝试使用 INotifyPropertyChanged 但它只检测我在 DataTable 中设置某些值的时间,而不会在我更改 DataGrid 中任何单元格的任何值时检测,我已经尝试过 OneWayTwoWay 但没有任何反应。

提前致谢!

最佳答案

数据网格将绑定(bind)到对象列表。如果您希望网格在单个对象属性更改时更新,则每个包含的对象必须实现 INotifyPropertyChanged界面。

INotifyCollectionChanged是集合应该实现的接口(interface),用于添加和删除事件的通知。

请参阅 this page 上的“如何实现集合”部分.

<小时/> 以下是解决您的问题的方法:

  • 创建一个新类,公开每个DataRow中当前保存的属性。 。在此类上实现 INotifyPropertyChanged .
  • 而不是 DataTable ,使用ObservableCollection<T>或者你的新类(class)。

ObservableCollection已经实现 INotifyCollectionChanged ,这样您就可以省去自己实现的精力。

关于wpf - INotifyPropertyChanged 或 INotifyCollectionChanged 与 DataTable 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5798936/

相关文章:

WPF文本框绑定(bind)在再次向前和向后导航后消失

c# - Prism 登录对话框

wpf - 在 DataTemplates 中使用 TemplateBinding

c# - 你如何在 WPF 中改变图像的颜色?

wpf - 如何将多个值绑定(bind)到单个 WPF TextBlock?

c# - OnPropertyChanged 在 xamarin.forms 应用程序中的 android 上引发异常

mvvm - 来自 iNotifyPropertyChanged 系统的 View 模型之间的通信

c# - 当属性第二次设置为相同值时,INotifyPropertyChanged 不起作用

c# - 在 XAML 中将动画绑定(bind)到 ListViewItem

c# - 绑定(bind) DataTemplate 中的 RotateTransform Angle 未生效