我在用x:Key引用的资源字典中有一个外部样式资源。它有一个指定目标(TextBlock)的x:TargetType。是否可以将此样式应用于包含TextBlock的控件,并使该控件中的所有TextBlock元素都应用该样式?
谢谢,罗伯特
发布于 2009-08-11 21:12:46
最简单的方法是在控件中定义一个基于外部样式资源的样式,但不要指定x:Key,只指定TargetType。
<Style TargetType="{x:Type TextBlock}" BasedOn="{StaticResource SomeOtherStyle}">如果没有键,它将自动应用于控件中的所有TextBlocks。
发布于 2009-08-12 11:37:57
在其他评论上做一点扩展。当你使用Brandon所展示的语法时:
<Style TargetType="{x:Type TextBlock}" BasedOn="{StaticResource SomeOtherStyle}">BasedOn="“基本上是一种风格的”继承“。这个样式将拥有来自它所基于的样式的setter的基本集合。这使您能够使用仅在这种情况下适用的选项来扩充样式,或者根据情况需要重新定义样式的范围。
您在字典文件中将该样式作为键控样式,只能显式应用。正如Brandon所展示的那样,通过“重新定义”您的样式,您现在可以通过省略键来重新定义作用域,从而使其应用于该样式作用域中目标类型的所有元素。因此,如果你所有的TextBlocks都在一个网格中,你可能会得到这样的东西:
<Grid.Resources>
<Style TargetType="{x:Type TextBlock}" BasedOn="{StaticResource MyBaseStyle}">
</Style>
</Grid.Resources>发布于 2009-08-11 21:12:29
不能,但您可以将样式自动应用于特定类型的所有元素,如下所示:
<!-- Applies to all buttons in scope of this style -->
<Style x:Key="{x:Type Button}" TargetType="{x:Type Button}">
...
</Style>https://stackoverflow.com/questions/1262915
复制相似问题