绑定到DataGrid的ObservableCollection - 利用工厂方法

3

背景

我正在将一个DataGrid绑定到一个ObservableCollection。这个ObservableCollection中的ViewModels没有无参构造函数,因此CanUserAddNewRows属性被评估为false。

据我所知,当绑定时,ObservableCollection默认使用ListCollectionView,而IEditableCollectionViewAddNewItem实现在内部检查无参构造函数,从而禁用了AddNew功能。

问题

我该如何提供Datagrid请求的新对象/工厂?


你能不能添加一个无参构造函数,然后调用带有默认值的参数化构造函数呢? - sa_ddam213
不,无参构造函数不是一个选项。在构建时需要依赖项。 - Michael G
1个回答

1
您可以从ListCollectionView中派生并自定义其行为;然后,您可以将其用作ObservableCollection的包装器,并绑定它,而不是直接绑定OC。当绑定到集合时,WPF在幕后创建一个ICollectionView,如果您直接提供它,它将使用该视图代替。

我认为 ListCollectionView.AddNew创建的对象类型做了类似的事情?

我建议先花些时间了解ListCollectionView的所有特殊之处... 它不是很简单,但也不是天文学。


谢谢,这真的起到了作用!我继承自ListCollectionView,并重写了IEditableCollectionView.AddNew、IEditableCollectionView.CancelNew和IEditableCollectionView.Remove。 - Michael G

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接