WPF style ne modifie pas certaines propriétés
-
24-10-2019 - |
Question
J'ai un Style
spécifié pour Paragraph
dans le cadre de la section Ressources de mon 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>
J'ai un fichier XAML qui contient mon FlowDocument
et il a quelques Paragraph
s qui sont définis comme ceci:
<Paragraph Style='{DynamicResource myStyle}">
Stuff here
</Paragraph>
Le problème que j'ai que Foreground
ne s'applique pas au texte (il montre que le noir plutôt que LightSteelBlue) et le FontSize
ne change pas lorsque la propriété MyFontSize
est modifiée.
J'ai vérifié la valeur de la propriété dans le code derrière et il est défini, mais il ne se traduit pas par un changement dans l'interface utilisateur.
Cela semble être seulement un problème avec le FlowDocument
si elle est chargée dans le FlowDocumentReader
lors de l'exécution. Si le XAML est explicitement placé à l'intérieur du FlowDocumentReader
dans le fichier XAML, le Foreground
est la bonne couleur et la FontSize
change en fonction de la valeur de la propriété.
Idées?
Résolu:
Comme je l'ai écrit dans ma réponse ci-dessous, en déplaçant le bloc Style
dans la section Ressources du FlowDocument
lui-même résout le problème.
La solution 2
Eh bien, je résolu ce problème en déplaçant les blocs de style à partir des ressources FlowDocumentReader et dans la section Ressources du FlowDocument lui-même. Le FlowDocument résultant ressemble à quelque chose comme ceci:
<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>
Autres conseils
Avez-vous essayé de placer au premier plan pour votre paragraphe directement? il doit être un autre propriété propety / joint qui gère l'avant-plan du contenu.