我正在尝试为继承自 TreeView 并使用 TreeViewItems 作为项目容器的自定义 PropertyGrid 控件创建不同的主题。此外,我想根据 TreeViewItem 绑定到的对象类型为 TreeViewItems 设置控件模板。我更愿意像现在一样通过设置 ItemsSource 来填充 PropertyGrid。
目前,我通过 HierarchialDataTemplate 设置 TreeViewItems.ItemContainerStyleSelector,根据绑定对象的类型应用不同的控件模板。在这种样式选择器中,我通过资源键返回静态资源。我不想使用此选择器和资源键方法,而是根据要绑定的对象的类型创建不同的派生 TreeViewItem 对象。这将允许我根据类型为每个主题应用不同的样式,就像其他控件的主题一样。但我看不出有办法做到这一点。覆盖 ItemsControl.GetContainerForItemOverride 如果传递了要绑定的对象或至少是其类型,它将执行我想要的操作,但是我看不到使此工作的方法。关于如何做到这一点的任何想法?或者,我对他的一切都错了吗?