您好,我正在寻求您的帮助,因为我无法让我的“BasedOn”风格正常工作。这是情况:
我在 ResourceDictionary 中定义了我的基本样式,如下所示:
样式.xaml
<Style TargetType="{x:Type TreeView}" x:Key="MyBaseStyle">
<Style.Resources>
<HierarchicalDataTemplate ...>
...
</HierarchicalDataTemplate>
<DataTemplate ...>
...
</DataTemplate>
<Style TargetType="{x:Type TreeViewItem}">
...
</Style>
</Style.Resources>
<!-- This is for test purpose -->
<Setter Property="Background" Value="Red" />
我将这本字典合并到我的 App.xaml 中,如下所示:
应用程序.xaml
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Styles.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
这是我之前所做的,在我的主窗口中效果很好:
主窗口.xaml
<TreeView ... Style="{StaticResource MyBaseStyle}" />
但是因为我的应用程序中有多个 TreeView,我需要对它们应用 MyBaseStyle,并为每个 TreeView 添加不同的 DataTrigger。我试过这个:
主窗口.xaml
<TreeView ...>
<TreeView.Style>
<Style TargetType="{x:Type TreeView}" BasedOn="{StaticResource MyBaseStyle}">
<Style.Triggers>
<!-- DataTrigger here -->
</Style.Triggers>
</Style>
</TreeView.Style>
</TreeView>
问题是 MyBaseStyle 中的 HierarchicalDataTemplate 不起作用。MyBaseStyle 的红色背景出现,DataTrigger 工作正常,但不是模板。似乎程序忽略了 BasedOn 样式的 Style.Resources ?
我认为这可能是一个样式范围问题,但我该如何解决它,而不必为每个 TreeView 重复代码?有人已经遇到过这种情况,知道问题的原因吗?
谢谢你的帮助,阿诺。