恢复动态资源值

Restore dynamic resource value

我有一个带有样式的文本块 tb

<TextBlock x:Name="tb"  Style="{DynamicResource H1Style}" Text="Test"/>
<Style TargetType="{x:Type TextBlock}" x:Key= "H1Style">
    <Setter Property="FontSize" Value="18" />
    <Setter Property="FontWeight" Value="Light"/>
</Style>

那我换码

tb.FontSize = 5;

如何恢复tb的H1Style样式?

我尝试设置 SetResourceReference,但 FontSize 仍然是 5 而不是 18。

tb.SetResourceReference(Control.StyleProperty, "H1Style");

这一行 - tb.FontSize = 5; - 将 本地值 分配给 TextBlock 的 FontSize 属性。有一种方法可以撤消分配 - ClearValue() 方法:

 tb.ClearValue(TextBlock.FontSizeProperty);

FontSize 是一个依赖项 属性,它的值是根据 DP value precedence

计算的

DP 值优先列表中有 3 个来源:

  • 局部值5

  • 样式Setter值18

  • 默认值 FontSize DP

ClearValue() 删除本地值,导致重新计算,下一个值由 Style Setter 提供,它在当前来源

中具有最高优先级