首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用不同的TargetType设置样式?

用不同的TargetType设置样式?
EN

Stack Overflow用户
提问于 2009-08-11 21:05:48
回答 4查看 3.2K关注 0票数 0

我在用x:Key引用的资源字典中有一个外部样式资源。它有一个指定目标(TextBlock)的x:TargetType。是否可以将此样式应用于包含TextBlock的控件,并使该控件中的所有TextBlock元素都应用该样式?

谢谢,罗伯特

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-08-11 21:12:46

最简单的方法是在控件中定义一个基于外部样式资源的样式,但不要指定x:Key,只指定TargetType。

代码语言:javascript
复制
<Style TargetType="{x:Type TextBlock}" BasedOn="{StaticResource SomeOtherStyle}">

如果没有键,它将自动应用于控件中的所有TextBlocks。

票数 4
EN

Stack Overflow用户

发布于 2009-08-12 11:37:57

在其他评论上做一点扩展。当你使用Brandon所展示的语法时:

代码语言:javascript
复制
<Style TargetType="{x:Type TextBlock}" BasedOn="{StaticResource SomeOtherStyle}">

BasedOn="“基本上是一种风格的”继承“。这个样式将拥有来自它所基于的样式的setter的基本集合。这使您能够使用仅在这种情况下适用的选项来扩充样式,或者根据情况需要重新定义样式的范围。

您在字典文件中将该样式作为键控样式,只能显式应用。正如Brandon所展示的那样,通过“重新定义”您的样式,您现在可以通过省略键来重新定义作用域,从而使其应用于该样式作用域中目标类型的所有元素。因此,如果你所有的TextBlocks都在一个网格中,你可能会得到这样的东西:

代码语言:javascript
复制
<Grid.Resources>
<Style TargetType="{x:Type TextBlock}" BasedOn="{StaticResource MyBaseStyle}">                  
</Style>
</Grid.Resources>
票数 1
EN

Stack Overflow用户

发布于 2009-08-11 21:12:29

不能,但您可以将样式自动应用于特定类型的所有元素,如下所示:

代码语言:javascript
复制
<!-- Applies to all buttons in scope of this style -->
<Style x:Key="{x:Type Button}" TargetType="{x:Type Button}">
   ...
</Style>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1262915

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档