我正在玩第三方包装图表(Modern UI Charts)。它看起来很棒,似乎适用于我需要的东西。
但是在软件包附带的示例代码中,所有样式和模板都位于Generic.xaml
的资源字典中,因为它们都是自定义(无外观)控件。
但我想覆盖Generic.xaml
文件中的很多内容,包括一些视觉状态。具体来说,在我想要使用的图表中,它会在任何数据发生变化时进行动画制作。我想把它关掉。
如果我尝试编辑混合中的模板或样式,我会看到默认xaml中的一些代码,但不是视觉状态。有没有办法修改它们?
或者我如何完全覆盖Generic.xaml
并将其替换为我自己的?
答案 0 :(得分:1)
当您继承控件并通过DefaultStyleKeyProperty.OverrideMetadata
我不确定你的实施情况。通常,如果您为相关类型创建样式,它将覆盖现有样式,除非您使用BasedOn
属性。
例如
<Style TargetType="local:PieChart" BasedOn="{StaticResource BaseChartStyle}">
<Setter Property="ChartAreaStyle" Value="{StaticResource PieChartChartAreaStyle}" />
<Setter Property="PlotterAreaStyle" Value="{StaticResource PieChartPlotterAreaStyle}" />
</Style>
如果您将上面的内容重新定义为
<Style TargetType="local:PieChart" >
... your style
</Style>
它将覆盖现有的样式
或者您可以选择通过BasedOn="{StaticResource {x:Type local:PieChart}}"
<Style TargetType="local:PieChart" BasedOn="{StaticResource {x:Type local:PieChart}}">
<Setter Property="ChartAreaStyle" Value="{StaticResource MyChartAreaStyle}" />
</Style>
以类似的方式,您可以使用自己的版本覆盖所需元素的Template
属性。