2010-03-12 2 views
5

Например, если 1 есть TextBlock:возможность seletively цвета оберточной TextBlock в Silverlight/WPF

«Lorem Ipsum морковь, увеличенные скидки, но они делают occaecat времени и жизненные силы, такие как труд и ожирение какое-то. на протяжении многих лет, я приду, кто nostrud упражнения, школьный район труда, но к aliquip экс еа Commodo consequat. DUIs, однако, cupidatat труд боль возникает при критике в удовольствии желания быть один cillum и др Dolore маген бежать не производит результирующую. excepteur они чернокожие cupidatat не excepteur, SÜNT в кульпа Qui officia то есть отказаться от мягких умов изменятся ".

1 хотят первые 10% этого TextBlock, так что цвет шрифта должен быть красным, а остальные должны быть зелеными.

Это, возможно, означает, что она будет окрашивать «Lorem Ipsum морковь, помидоры adipisici» часть «п». В основном пиксель-мудрый цвет шрифта вместо символов-накрест.

Другим важным поведение является то, что процент уважает упаковку, и что, если 50% содержимого TextBlock окрашен, это должно означать 50% текста, чтобы чтение цвета, а не в первой половине блока.

Например, это подобный вопрос (с правильными ответами), но относительно Этикетки/TextBlock, без упаковки, Is it possible to seletively color a label in Silverlight?

ответ

3

-не считает, что это возможно пиксель-накрест (по крайней мере, без измерения текст с помощью одного из методов из связанного вопроса на основе строка за строкой). Это может быть сделано с помощью символов-накрест объект Run

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

Если текст является динамическим, вы должны написать код, чтобы разделить текст на две трассы (и назначить их TextBlock.Inlines сбора), но оно не должно быть слишком трудно герметизировать, что в пользовательский элемент управления. Вы можете использовать

4

пробегов, чтобы отделить текст. В этом смысле, вы можете изменить фон каждого прогона, как так ...

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

Насколько мне известно, нет встроенной поддержки для этого сценария. WPF, 1 ожидать, вы должны написать свой собственный TextFormatter. В Silverlight, вы могли бы сделать что-то ужасное, как оказание битовой карты в памяти и обработке изображений с помощью найти пиксели, чтобы изменить, а затем рисунок растрового изображения на экране. Eugh.

Смежные вопросы