我在第三方dll(Material Design)的资源字典中有一些样式
<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,我需要改变它的行为,这样一些Items(或节点可能更正确)应该让他们的孩子总是根据绑定到VM属性进行扩展。此外,当我在树视图中选择项目时,项目的子树应自动展开。当我离开项目时,除非将childtree设置为始终展开,否则它应该会崩溃。我已经设法通过编辑TreeView的ItemContainerStyle的副本来完成所有这些。
问题和我的问题,一旦我定义/编辑我自己的ItemContainerStyle副本,我就会丢失所有动画效果,因为它会覆盖MaterialDesign资源的默认设置样式。如何确保我的ItemContainerStyle还保留了MaterialDesign Referenced ResourceDictionary(ies)中的动画和样式?
默认样式的关键是它的类型。因此,您可以使用这样的密钥。
<TreeView.ItemContainerStyle>
<Style TargetType="{x:Type TreeViewItem}" BasedOn="{StaticResource {x:Type TreeViewItem}}" >