WPF 更改 ItemContainerStyle 但保留引用的基本样式

WPF change ItemContainerStyle but keep a referenced base style

我在 ResourceDictionaries 中有一些来自第 3 方 dll (MaterialDesign) 的样式

 <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Defaults.xaml" />
        <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Light.xaml" />
        <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Dark.xaml" />

我有一个 TreeView,由于在我的 UserControl 的资源字典中添加了这些样式,它获得了很酷的动画效果。

稍后我打算实现某种方式,以便用户可以在三个词典的三种样式之间切换。 欢迎就如何最好地实施提出建议。

我有一个 TreeView,我需要更改它的行为,这样某些项目(或节点可能更正确)应该始终根据绑定到 VM 属性 来扩展它们的子项。此外,当我 select 树视图中的项目时,该项目的子树应该会自动展开。当我离开项目时,子树应该折叠,除非它设置为始终展开。我已经设法通过编辑 TreeView 的 ItemContainerStyle 的副本来完成所有这些工作。

问题和我的问题,一旦我 define/edit 我自己的 ItemContainerStyle 副本,我就失去了所有动画效果,因为它覆盖了 MaterialDesign 资源中的默认设置样式。 如何确保我的 ItemContainerStyle 也保留来自 MaterialDesign Referenced ResourceDictionary 的动画和样式?

默认样式的关键是它的类型。 因此,您可以将 basedon 与这样的键一起使用。

     <TreeView.ItemContainerStyle>
         <Style TargetType="{x:Type TreeViewItem}"  BasedOn="{StaticResource {x:Type TreeViewItem}}"  >