让's say I have two different, distinct stack panels (we' ll称它们为SPA和SPB),每个都有10个文本块作为子元素 . SPA中的所有文本块都应使用一种样式,SPB中的所有文本块都应使用另一种样式 . 实现此目的的一种方法是在参考资料中声明两个样式,然后将 Style="style1"
附加到第一个堆栈面板中的所有10个文本块,并将 Style="style2"
追加到第二个中的所有10个文本块 . 但是,似乎应该有一些简单的方法将样式附加到stackpanel本身,以某种方式告诉stackpanel将它应用于所有子文本块的子元素 . 反正有没有这样做?
我自然而然地寻找这个解决方案的原因是因为这正是你用CSS在HTML中做同样的事情,我希望XAML会有类似的功能 .
谢谢!
附:我正在使用Silverlight,但我猜测我的情况和任何解决方案(如果有的话)一般都适用于XAML / WPF .
4 回答
在主容器的资源部分中,将样式设置为
x:Key
属性,目标类型为TextBlock
. 然后在每个StackPanel
的每个资源部分中,您可以将BasedOn
属性设置为主样式的键的样式(不要忘记使用StaticResource绑定,而不仅仅是键的名称)然后说TargetType="{x:Type TextBlock}"
并结束标签 . 这应该将样式带入StackPanel并设置所有TextBlocks的样式 .您可以通过覆盖每个堆栈面板的Resources中的默认文本块样式来完成此操作:
我找到了一个很好的解决方案here . 以下是示例代码 -
我希望这会有所帮助 .