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 Paragraphs 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.

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top