1

我有一组不同类型的项目,所有项目都继承自一个共同的基本类型(ItemBase)。我的每个组都有一个 Items 类型的集合ObservableCollection<ItemBase>

在我的 SemanticZoom.ZoomedInView 中,我可以设置一个 DataTemplateSelector,在 SelectTemplateCore() 中,我可以强制转换 item 参数来确定要应用哪个模板。

但是,在我的缩小视图中,对象作为 DependencyObjects 传递,我终其一生都无法弄清楚如何获取传入的数据来确定要使用的模板。

要在缩小视图中设置 GridView 的项目源,我使用

(semZm.ZoomedOutView as ListViewBase).ItemsSource = this.groupedItemsViewSource.View.CollectionGroups;

因为这似乎是使 zoomedin 和 zoomedout 视图同步的唯一方法(当您单击缩小视图中的组时,它应该将我带到 zoomedinview 中的适当位置以查看该组的详细信息。

那么,在获取 SelectTemplateCore() 中的实际组方面,我是否遗漏了一些明显的东西,或者如果没有更好的方法来绑定 ZoomedOutView 的 ItemsSource?

4

1 回答 1

2

有关将 DependencyObject 转换为可用类型的适当方法,请参阅此问题的答案。

本质上,将其转换为ICollectionViewGroup以访问成员。

于 2012-07-16T14:26:16.817 回答