Как правильно добавить префикс (или суффикс) для привязки данных в XAML?

Как мне привязать один текстовый блок, чтобы сказать "Привет, Иеремия"?

<TextBlock Text="Hi, {Binding Name, Mode=OneWay}"/>

Ищем элегантное решение. Что там? Я стараюсь держаться подальше от написания конвертера для каждой комбинации префикс/суффикс.

Ответ 1

Если у вас есть только одно значение, которое нужно вставить, вы можете использовать свойство Binding StringFormat. Обратите внимание, что для этого требуется .NET 3.5 SP1 (или .NET 3.0 SP2), поэтому используйте его, только если вы можете рассчитывать на свою производственную среду, имеющую последний пакет обновления.

<TextBlock Text="{Binding Name, Mode=OneWay, StringFormat='Hi, {0}'}"/>

Если вы хотите вставить два или более разных связанных значения, я обычно делаю StackPanel с ориентацией = "Горизонтальная", которая содержит несколько текстовых блоков, например:

<StackPanel Orientation="Horizontal">
    <TextBlock Text="Good "/>
    <TextBlock Text="{Binding TimeOfDay}"/>
    <TextBlock Text=", "/>
    <TextBlock Text="{Binding Name}"/>
    <TextBlock Text="!"/>
</StackPanel>

Ответ 2

коррекция (минор) к решению @Joe White

<TextBlock Text="{Binding Name, Mode OneWay, StringFormat='Hi {0}}'"/>

для правильного применения stringformat требуется одиночные кавычки
работал у меня:)

Ответ 3

Я думаю, это должно сделать это.

<TextBlock>
    <TextBlock Text="Hi, " />
    <TextBlock Text="{Binding Name, Mode=OneWay}" />
</TextBlock>