2011-12-03 18 views
6

Czy możliwe jest dodawanie kolorów dynamicznych do blokady TextBlock ..i.e. mieć jedną postać w jednym kolorze, a drugą w innym kolorze.Wiele kolorów w blokach tekstowych

<TextBlock Text="{Binding no}" TextWrapping="Wrap" Margin="10,0,0,0" Style="{StaticResource PhoneTextSubtleStyle}" FontSize="40" Foreground="#A400C4FF" > 
    // Can we add something here to specify what colours for what chars 
</TextBlock> 

Zasadniczo wprowadzam dynamiczną sekwencję 4-znakową od nr. Związałem to do tego TextBlock wewnątrz ListBox. Czy możliwe jest, aby postacie miały różne kolory?

Jeśli tak, to możliwe jest dynamiczne dodawanie tych kolorów, np. Jeśli kliknę przycisk, niektóre postacie zmieniają kolor?

Dziękuję. Każda pomoc jest doceniana.

Odpowiedz

25

Właściwie można, co może się przydać, gdy robisz StringFormat na powiązanym z danymi bloku tekstowym lub w wielu innych miejscach.

Jeśli jednak chcesz go wypróbować, np. Tutaj jest przykład SL dla etykiety formularza, która umieszcza czerwoną gwiazdkę obok pola Wymagane pola, ale może również dodać do niej więcej elementów, jak pokazano w przykładzie. Powinien pracować dla Silverlight, WPF, UWP, itp ...

<TextBlock> 
     <Run Text="*" Foreground="#FFE10101"/><Run Text="Required Line" /> 
     <Run Text="Red" Foreground="Red"/> 
     <Run Text="Blue" Foreground="Blue"/> 
     <Run Text="{Binding SomeString, StringFormat='Hell ya you can make \{0\} a different color!'}" Foreground="Orange"/> 
</TextBlock> 
0

Urządzenie TextBlock nie obsługuje wielu kolorów pierwszego planu.

Można odtworzyć to zachowanie, używając wielu bloków tekstu (po jednym dla każdej litery) i umieszczając je w pakiecie Wrappanel. Możesz wtedy zmienić kolor pojedynczych znaków/liter, jak chcesz.
Należy mieć na uwadze prawdopodobny wpływ na wydajność. Marginesy wokół poszczególnych liter będą musiały zostać dostosowane, aby odtworzyć standardowe zachowanie. Zachowaj szczególną ostrożność podczas interpunkcji.

+0

Dzięki to działa !! – cjds

0

Pracuję dla Mango z pakietem SDK WP7. Możesz użyć <Run>. Wydaje się trochę buggy na WP7, trzeba dodać spacje na posesji Run.Text aby odstępy poprawne:

<TextBlock>Hello<Run Foreground="Bisque" Text=" Holla "></Run>and hello again!</TextBlock>; 
+0

Jak mogę dynamicznie ustawić tekst w tym tagu Run? – iamatsundere181