Кодовый эквивалент фрагмента XAML - PullRequest
2 голосов
/ 16 декабря 2010

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

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

Итак, мой второй вопрос: к какому свойству я должен привязать результат моего конвертера?

Ответы [ 2 ]

6 голосов
/ 16 декабря 2010

Во-первых, вы можете добавлять блоки Run через свойство 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", так как это ожидает строку, а не набор прогонов.

1 голос
/ 16 декабря 2010

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

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

Добавьте свой конвертер в привязку каждого текстового блока. Я думаю, что он более гибкий, чем использование Run

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...