【问题标题】:XAML: How to apply styling to ALL elements, even elements that have a Style setXAML:如何将样式应用于所有元素,甚至是具有样式集的元素
【发布时间】:2015-11-09 19:32:04
【问题描述】:

/edit:Windows 10 UWP 应用,它使用新的 ThemeResources(所以没有 StaticResources)

我想将我的所有文本块居中。我知道我必须在我的 Application.Resources 中执行此操作:

<Style TargetType="TextBlock">
    <Setter Property="HorizontalAlignment" Value="Center"/>
</Style>

但是,当 TextBlock 设置了样式时,这不起作用。

<TextBlock Text="{Binding Summary}" Style="{ThemeResource HeaderTextBlockStyle}"/>

我也知道如何像上面一样覆盖 ThemeResources 中的颜色,但是这个 ThemeResource 没有设置 Horizo​​ntalAlignment。此外,我不想在我的资源中添加重复的样式,因为我正在使用不同的 ThemeResources。

我想要实现的是在 CSS 中非常容易实现的目标: 跨度 { 文本对齐:居中; } ...但我不知道如何在没有大量重复代码的情况下在 XAML 中执行此操作。我希望它一定很容易?

为了澄清我的问题:我想将样式应用于所有 TextBlock、带有样式集的 TextBlock 和没有样式集的 TextBlock。

【问题讨论】:

    标签: c# wpf xaml


    【解决方案1】:

    您可以在 Style 中使用 BasedOn 参数,或删除 HeaderTextBlockStyle

    中的 Horizo​​ntalAlignment 属性

    还要检查 Horizo​​ntalAlignment 属性是否可以继承自当前样式的 HeaderTextBlockStyle,因此您可以仅为此项手动设置它

    【讨论】:

    • HeaderTextBlockStyle 是一个 ThemeResource(8.1 应用程序中的新功能),我找不到覆盖它的方法。 BasedOn={StaticResource ..} 或 BasedOn={ThemedResource ..} 不能同时使用。
    • 尝试为当前控件手动设置 Horizo​​ntalAlignment 值
    • 是的,它工作得很好,但我想将它应用到所有 TextBlocks,那些将 Style 设置为 ThemeResource 的,以及那些没有 Style 集的。
    • 你可以编辑你的ThemedResource添加Horizo​​ntalAlignment
    猜你喜欢
    • 2014-12-08
    • 2017-02-16
    • 2012-11-13
    • 2018-05-19
    • 2017-10-30
    • 2018-03-16
    • 1970-01-01
    • 2013-03-31
    • 2010-10-29
    相关资源
    最近更新 更多