Несколько Цветов В TextBlock

можно ли добавить динамические цвета в TextBlock ..т. е. иметь один символ в одном цвете и следующий в другом цвете.

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

в основном я ввожу динамическую последовательность символов 4 из no. Я привязал его к этому текстовому блоку внутри списка. Возможно ли иметь персонажей в разных цветах.

Если это так, можно добавить эти цвета динамически, например. Если я нажму кнопку, некоторые символы изменят цвет?

Спасибо. Любая помощь оцененный.

3 ответов


на самом деле, вы можете, что может пригодиться, когда вы делаете StringFormat на Textblock с привязкой к данным или в ряде других мест.

Если вы действительно хотите попробовать, например, вот пример SL для метки формы, которая помещает красную звездочку рядом с текстовыми полями, но затем также может добавить к ней больше материала, как показано в Примере. Должен работать для Silverlight, WPF, UWP и т. д...

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

на TextBlock не поддерживает несколько цветов фона.

вы можете воссоздать это поведение, используя несколько текстовых блоков (по одному для каждой буквы) и помещая их в wrappanel. Затем вы можете изменить цвет отдельных символов/букв, как вы хотите.
Остерегайтесь возможного влияния на производительность. Поля вокруг отдельных букв должны быть скорректированы, чтобы воссоздать стандартное поведение. Будьте особенно осторожны пунктуация.


Я разрабатываю для Mango с помощью WP7 SDK. Вы можете использовать . Кажется немного багги на WP7, вы должны добавить пробелы на ходу.Text свойство, чтобы получить интервал правильно:

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