2

我需要一个适用视图模型的列表,并且正在讨论是尝试制作复合集合还是创建它们继承的共享接口。一种方法是首选吗?

我假设复合集合维护独立于基础集合的项目索引,因此可以有复合集合项目#0(项目类型A)1(项目类型B)2(项目类型A)3(项目类型 A),并保持列表中的顺序。

这两种方法之间有什么主要区别吗?

我想我会更详细地解释我通常做什么。通常我需要一个 selectedItems 列表,我可以创建一个 Object 类型的 ObservableCollection,然后让树视图根据数据类型应用不同的数据模板。然而,我认为最好有一些类型安全并且知道不只是任何对象都被抛出到集合中,所以我实现了一个接口。然而,有时我觉得很可笑,因为实现接口的对象之间没有足够的共享属性,所以我觉得尝试制作一个共享接口很可笑。

使用每种可能类型的单独列表实现复合集合可能更有意义。

4

1 回答 1

2

根据msdn(在 CompositeCollection 上):

允许将多个集合和项目显示为单个列表。

除非这是您需要的(我认为不是),否则您应该选择ObservableCollection<T>. 由于它是通用的,因此可以避免不必要的、容易出错的铸件。当与值类型一起使用时(即,没有装箱/拆箱),消除转换其元素的需要也可以提高性能。

此外,如果不了解有关视图模型的更多信息,很难判断让所有视图模型实现共享接口是否是一个好的选择。问问自己:这有意义吗?他们之间真的有关系吗?集合的客户端是否能够平等地对待该接口的实例,而不管它们的真实类型如何?

于 2013-11-13T22:55:04.457 回答