Восстановить динамику c значение ресурса - PullRequest
0 голосов
/ 26 мая 2020

У меня есть текстовый блок 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;

Как мне восстановить стиль H1Style tb?

Я пробовал установить SetResourceReference, но FontSize по-прежнему 5 вместо 18.

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

1 Ответ

1 голос
/ 26 мая 2020

эта строка - tb.FontSize = 5; - присваивает локальное значение свойству FontSize TextBlock. Существует способ отменить назначение - ClearValue () метод:

 tb.ClearValue(TextBlock.FontSizeProperty);

FontSize является свойством зависимости, и его значение вычисляется в соответствии с приоритетом значения DP

В списке приоритета значений DP есть 3 источника:

  • локальное значение 5

  • Значение параметра Style Setter 18

  • значение по умолчанию FontSize DP

ClearValue() удаляет локальное значение, вызывает повторное вычисление, и следующее значение предоставляется установщиком стилей, который имеет наивысший приоритет из имеющихся источников

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...