是否可以在样式中定义ResourceDictionary?
例如,假设我想为StackPanels设置两种不同的样式,并且在一种情况下,我希望所有按钮都是蓝色,另一种我希望它们是红色。这可能吗?
像
这样的东西<Style x:Key="RedButtonsPanel" TargetType="{x:Type StackPanel}">
<Setter Property="Orientation" Value="Horizontal" />
<Setter Property="StackPanel.Resources">
<Setter.Value>
<ResourceDictionary>
<Style TargetType="{x:Type Button}">
<Setter Property="Background" Value="Red" />
</Style>
</ResourceDictionary>
</Setter.Value>
</Setter>
</Style>
上面的代码失败了,关于Setter的Property值的错误不能为null(即使它显然不是null)。
我可以做类似
的事情<ResourceDictionary x:Key="RedButtons">
<Style TargetType="{x:Type Button}">
<Setter Property="Width" Value="100" />
<Setter Property="Background" Value="Red" />
</Style>
</ResourceDictionary>
<StackPanel Resources={StaticResource RedButtons} />
但是我想知道是否有办法将ResourceDictionary合并到样式中。
答案 0 :(得分:4)
StackPanel.Resources
不是DependencyProperty
,因此我不相信您可以在该样式中设置该属性。
答案 1 :(得分:3)
尝试将每个Style(s)
的{{1}}添加到TargetType
DockPanel
。
我使用Style.Resources
DockPanel
做了类似的事情。想要将所有按钮或分隔符添加到Style
以便以一致的方式进行样式设置。
以下是一个示例:
DockPanel