我有一组不同类型的项目,所有项目都继承自一个共同的基本类型(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?