0

我在 ResourceDictionaries 中有一些来自 3-rd 方 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" />

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

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

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

问题和我的问题,一旦我定义/编辑我自己的 ItemContainerStyle 副本,我就会丢失所有动画效果,因为它会覆盖 MaterialDesign 资源中的默认设置样式。 如何确保我的 ItemContainerStyle 也保留 MaterialDesign 引用的 ResourceDictionary(ies) 中的动画和样式?

4

1 回答 1

1

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

     <TreeView.ItemContainerStyle>
         <Style TargetType="{x:Type TreeViewItem}"  BasedOn="{StaticResource {x:Type TreeViewItem}}"  >
于 2019-04-18T17:22:22.233 回答