2010-12-16 3 views
2

Я хочу знать код эквивалент той части, которая находится внутри TextBlock:код эквивалент XAML фрагмент кода

<TextBlock> 
    Hello 
    <Run Background="Red">S</Run> 
    <Run Background="Blue">O</Run> 
</TextBlock> 

Причина в том, что у меня есть конвертер, который возвращает TextBox содержание, но я не что тип возврата из конвертера. Я попробовал некоторые типы коллекций, которые содержат строку и 2 Run экземпляров, но это не сработает.

Кроме того, я заметил, что следующий не работал бы:

<TextBlock> 
    <TextBlock.Text> <--- Added this 
     Hello 
     <Run Background="Red">S</Run> 
     <Run Background="Blue">O</Run> 
    </TextBlock.Text> 
</TextBlock> 

Так что мой второй вопрос к какому свойству я должен связать мой результат конвертера?

ответ

6

Во-первых, вы можете добавить блоки запуска через свойство InLines, например.

TextBlock txtBlock = new TextBlock(); 

txtBlock.Inlines.Add(new Run { Text = "S", Background = Brushes.Red }); 
txtBlock.Inlines.Add(new Run { Text = "O", Background = Brushes.Blue }); 

Во-вторых, вы не можете добавить через «TextBlock.Text», как это ожидает строку, а не коллекция прогонов.

+0

спасибо! поэтому мне понадобится многозадачность для моего конвертера, где я передаю текстовый блок и текст. то я использую ваш код в конвертере, чтобы добавить прогоны к текстовому блоку.Inlines – thumbmunkeys 2010-12-16 11:23:56

1

Попробуйте это:

<Label> 
     <StackPanel Orientation="Horizontal"> 
      <TextBlock Text="Hello"/> 
      <TextBlock Background="Red" Text="S"/> 
      <TextBlock Background="Blue" Text="O"/> 
     </StackPanel> 
    </Label> 

Добавьте ваш конвертер к связыванию каждого textblocks.I думает, что его более гибким, чем при использовании Запускать

+0

спасибо biju. Я уже рассматривал это, но он не применим ко мне, поскольку мне нужно много текстовых блоков. – thumbmunkeys 2010-12-16 11:22:11

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