Стиль WPF не влияет на определенные свойства
-
24-10-2019 - |
Вопрос
у меня есть Style
указано для Paragraph
как часть моего FlowDocumentReader
Раздел ресурсов:
<FlowDocumentReader>
<FlowDocumentReader.Resources>
<Style x:Key="myStyle" TargetType="{x:Type Paragraph}">
<Setter Property="Foreground" Value="LightSteelBlue" />
<Setter Property="BorderBrush" Value="LightSteelBlue" />
<Setter Property="BorderThickness" Value="1.0" />
<Setter Property="FontStyle" Value="Italic" />
<Setter Property="FontSize" Value="{Binding Path=MyFontSize}" />
</Style>
</FlowDocumentReader.Resources>
</FlowDocumentReader>
У меня есть файл .xaml, который содержит мой FlowDocument
И у него есть некоторые Paragraph
S, которые определены как SO:
<Paragraph Style='{DynamicResource myStyle}">
Stuff here
</Paragraph>
Проблема, с которой у меня есть, в том, что Foreground
не относится к тексту (он показывает черный, а не LightSteelBlue) и FontSize
не меняется, когда MyFontSize
свойство изменено.
Я проверил значение свойства в коде, и оно установлено, но это не приводит к изменению пользовательского интерфейса.
Похоже, это только проблема с FlowDocument
Если он загружен в FlowDocumentReader
во время выполнения. Если XAML явно помещен в FlowDocumentReader
В файле .xaml Foreground
правильный цвет и FontSize
Изменения на основе настройки свойства.
Идеи?
Решено:
Как я написал в своем ответе ниже, перемещая Style
заблокировать в разделе ресурсов FlowDocument
Сам решает проблему.
Решение 2
Ну, я решил эту проблему, выдвинув блоки стиля из ресурсов FlowdocumentReader в раздел ресурсов самого FlowDocument. Результирующий протокок выглядит примерно так:
<FlowDocument>
<FlowDocument.Resources>
<Style x:Key="myStyle" TargetType="{x:Type Paragraph}">
<Setter Property="Foreground" Value="LightSteelBlue" />
<Setter Property="BorderBrush" Value="LightSteelBlue" />
<Setter Property="BorderThickness" Value="1.0" />
<Setter Property="FontStyle" Value="Italic" />
<Setter Property="FontSize" Value="{Binding Path=MyFontSize}" />
</Style>
</FlowDocument.Resources>
<Paragraph Style="{DynamicResource myStyle}">
Stuff here
</Paragraph>
</FlowDocument>
Другие советы
Вы пытались установить передний план для своего абзаца напрямую? Это должно быть другое свойство Propety/Acted, которое управляет содержимым передним планом.