2010-03-12 8 views
5

Par exemple, si 1 ont un textblock:de colorer seletively un TextBlock d'emballage dans Silverlight/WPF

« carottes Lorem Ipsum, des rabais améliorés, mais ils le temps et la vitalité occaecat, comme le travail et l'obésité d'une certaine sorte. au fil des ans, je viendrai, qui nostrud l'exercice, le travail du district scolaire, mais à aliquip ex ea commodo consequat. Duis, cependant, cupidatat les douleurs du travail viennent sur critiqué dans le plaisir du désir d'être cillum et dolore magna s'enfuir produit ne résultant. excepteur ils sont noirs cupidatat pas excepteur, sunt dans culpa qui officia qui est d'abandonner l'esprit doux changeront ".

1 veulent les premiers 10% de ce textblock, de sorte que la couleur de la police doit être rouge, et le reste doit être vert.

Cela peut-être dire qu'il serait colorer les « Lorem ipsum carottes, adipisici tomate » une partie de la « n ». Fondamentalement, la couleur de police au niveau des pixels au lieu de caractère sage.

Un autre comportement important est que le pourcentage respecte l'enveloppe, et que si 50% du contenu du TextBlock est coloré, il devrait dire 50% du texte en ordre de lecture est colorée, et non la première moitié du bloc.

Par exemple, ceci est une question similaire (avec réponses), mais en ce qui concerne l'étiquette/Textblock sans emballage, Is it possible to seletively color a label in Silverlight?

Répondre

3

1 ne croient pas que ce soit possible sage pixel (au moins pas sans mesure le texte en utilisant l'une des techniques de la question liée à une ligne par ligne). Il peut être fait en utilisant une course caractère sage objet

<TextBlock FontSize="24" TextWrapping="Wrap"> 
    <Run Foreground="Red">Lorem ipsum dolor sit amet, consectetur</Run> 
    adipisicing elit, sed do eiusmod tempor incididunt ut labore et 
    dolore magna aliqua. Ut enim ad minim veniam... 
</TextBlock> 

Si le texte est dynamique, vous aurez besoin d'écrire du code pour diviser le texte dans les deux pistes (et les affecter à la collection TextBlock.Inlines), mais il ne devrait pas être trop difficile de résumer cela en un contrôle personnalisé. Vous pouvez utiliser

4

fonctionne, pour séparer votre texte. En ce sens, vous pouvez modifier l'arrière-plan de chaque course, comme si ...

<TextBlock> 
     <Run Background="Red"> 
      Republican 
     </Run> 
     <Run Background="Blue"> 
      Democrat 
     </Run> 
    </TextBlock> 
2

A ma connaissance, il n'y a pas construit à l'appui de ce scénario. Le WPF, 1 attendre que vous devriez écrire votre propre TextFormatter. Dans Silverlight, vous pourriez avoir à faire quelque chose d'horrible comme rendant à un bitmap en mémoire et de manipulation d'image à l'aide pour trouver les pixels pour changer puis dessiner le bitmap à l'écran. EUGH.

Questions connexes