首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何针对所有控件(WPF样式)

如何针对所有控件(WPF样式)
EN

Stack Overflow用户
提问于 2010-11-09 14:24:22
回答 2查看 38.9K关注 0票数 94

我可以指定一个应用于所有元素的样式吗?我试过了

代码语言:javascript
复制
<Style TargetType="Control">
    <Setter Property="Margin" Value="0,5" />
</Style>

但它什么也没做

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-11-09 21:08:14

您创建的Style只针对Control,而不针对从Control派生的元素。如果不设置x:Key,它将隐式设置为TargetType,因此在本例中为x:Key="{x:Type Control}"

没有任何直接的方法可以指定一个Style来指向从StyleTargetType派生的所有元素。你还有一些其他的选择。

如果您有以下Style

代码语言:javascript
复制
<Style x:Key="ControlBaseStyle" TargetType="{x:Type Control}">
    <Setter Property="Margin" Value="50" />
</Style>

您可以以所有Buttons为目标,例如

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

或者直接在任何元素上使用样式,例如Button

代码语言:javascript
复制
<Button Style="{StaticResource ControlBaseStyle}" ...>
票数 128
EN

Stack Overflow用户

发布于 2018-05-03 06:11:24

正如Fredrik Hedblad回答的那样,您可以影响从控件继承的所有元素。

但是你不能将样式应用于具有相同样式的文本块和按钮。

为此,请执行以下操作:

代码语言:javascript
复制
    <Style x:Key="DefaultStyle" TargetType="{x:Type FrameworkElement}">
        <Setter Property="Control.Margin" Value="50"/>
    </Style>
    <Style TargetType="TextBlock" BasedOn="{StaticResource DefaultStyle}"/>
    <Style TargetType="Button" BasedOn="{StaticResource DefaultStyle}"/>
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4131034

复制
相关文章

相似问题

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