3

我们在使用 wpf 数据网格和 IEditableCollectionView 时遇到了一些问题(尽管此问题适用于使用 IEditableCollectionView 和 ItemsControl)当您的集合中没有项目时,IEditableCollectionView 无法确定应该插入哪些项目,因此我们在此处CanAddNew=false找到了解决方案(深埋在评论中)就像这样:

如果你像这样从 ObservableCollection 派生

public class PersonsList : ObservableCollection<Person> { }

您会发现如果初始集合为空,则视图上不会显示 NewItemPlaceHolder。这是因为 PersonsList 在设计时无法解析类型 T。对我有用的解决方法是将类型 T 作为参数传递给这样的类

PersonsList<T> : ObservableCollection<T> where T : Person { }

即使集合为空,这种方法也会放置 NewItemPlaceHolder。

我想知道我是否可以在我的集合上实现一个接口,通知 IEditableCollectionView 如果我收到 AddNew 请求要创建哪种类型。

4

1 回答 1

1

尝试实施IEditableObjectT看看问题是否消失。Vincent Sibal说这是必要的。但他也声称PersonsList<T>也需要,但你已经想通了。希望IEditableObject就足够了,您将能够使用非泛型类。

于 2010-04-23T20:15:59.117 回答