在我的情况下,根据配置设置,网格线应以不同的颜色显示。
我已经定义了一个TargetType为CellValuePresenter
的简单样式,我注意到该样式应用于除了目标类型为CellValuePresenter
的样式且具有自己的{{ {1}}。我在解决方案中为ControlTemplate
提供了许多样式ControlTemplate
,并且无法将所有这些样式更改为CellValuePresenter
我创建的这种新样式。
我有哪些选择,以便BasedOn
的样式可以在不修改每个样式的情况下进行更改。
答案 0 :(得分:2)
您可以将样式BasedOn
设为该元素的默认样式,以便它包含隐式样式中的所有setter。
例如,
<Style TargetType="{x:Type CellValuePresenter}">
<!-- Generic Style Setters -->
</Style>
<!-- This Style will include the setters from the implicit style above -->
<Style x:Key="CustomCellStyle"
TargetType="{x:Type CellValuePresenter}"
BasedOn="{StaticResource {x:Type CellValuePresenter}}">
<Setter Property="ControlTemplate" ... />
</Style>
答案 1 :(得分:2)
(联合国)幸运的是,样式并不像在CSS中那样适用,所以最终你最终会得到什么样的模式,其中样式在彼此之间建立起来。
如果为类型创建样式,则它将应用于样式范围内的所有类型。这意味着如果您将其包含在app.xaml的顶部,则一切都会受到影响,但如果仅将其包含在用户控件或window.xaml中,则仅适用于此。
如果创建样式并将其应用于特定控件,则本地样式集将覆盖基于全局类型的样式。除非您使用的是BasedOn,否则您明确表示不能这样做。
不幸的是,我认为你将被迫重构你如何处理你的风格以获得你想要实现的外观,并且BasedOn
将是你要走的路。