Добавление текста в связанный текстовый блок
Я хотел бы добавить текст к результатам, связанным с текстовым блоком:
<TextBlock Text="{Binding Title}" Foreground="#FFC8AB14" FontSize="28" />
Текст, который отображается:
" My title "
Я хочу показать:
This is "My title"
Ответы
Ответ 1
Вы можете использовать свойство StringFormat
привязки:
<TextBlock Text="{Binding Title, StringFormat=This is {0}}"></TextBlock>
Зайдите в эту запись в блоге для получения дополнительной информации: WPF String.Format в XAML с атрибутом StringFormat.
Ответ 2
Если вы хотите сделать это в привязке:
<TextBlock Foreground="#FFC8AB14" FontSize="28">
<TextBlock.Text>
<Binding Path="Title">
<Binding.StringFormat>
This is "{0}"
</Binding.StringFormat>
</Binding>
</TextBlock.Text>
</TextBlock>
Синтаксис элемента, необходимый для возврата кавычек. Если кавычки, где просто отметить вставленный текст и не должны появляться на выходе, намного проще:
<TextBlock Text="{Binding Title, StringFormat={}This is {0}}" Foreground="#FFC8AB14" FontSize="28">
Ответ 3
Привет Вы можете написать следующее:
<TextBlock>
<TextBlock>This is </TextBlock>
<TextBlock Text="{Binding Title}"></TextBlock>
</TextBlock>
Ответ 4
просто используйте StringFormat для целей форматирования.
<TextBlock Text="{Binding Title,StringFormat='This is {0}'}" Foreground="#FFC8AB14" FontSize="28" />
Ответ 5
Вы можете сделать это с помощью конвертера.
<TextBlock Text="{Binding Title, ConverterParameter=This is, Converter={StaticResource TextPrefixConverter}}" Foreground="#FFC8AB14" FontSize="28" />
Преобразователь просто префикс связанного значения с помощью ConverterParameter.
public class TextPrefixConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
String result = String.Empty;
if ( parameter != null)
result = parameter.ToString( );
if (value != null)
result += value.ToString( );
return result;
}
...
}
Не очевидно, что пробелы и/или кавычки должны быть частью вывода. Если это так, преобразователь можно изменить, чтобы обрезать пробелы и/или добавить кавычки в построенную строку.
Другой способ сделать это:
<TextBlock Foreground="#FFC8AB14" FontSize="28" >
<Run Text="This is " />
<Run Text="{Binding Path=Title}" />
</TextBlock>
Ответ 6
Лучший подход здесь в отношении производительности, как уже было сказано, использует StringFormat
для Binding
и назначает его свойству Text
TextBlock
.
Однако, если производительность не является проблемой, а читаемость XAML является предпочтительной, другой подход заключается в использовании Run
внутри TextBlock
:
<TextBlock Foreground="#FFC8AB14" FontSize="28">
This is <Run Text="{Binding Title}" />
</TextBlock>
Кроме того, вы можете применять различные стили (цвет текста/фона, курсив/полужирный шрифт, размер шрифта и т.д.) к различным частям вашего TextBlock
, что вы не можете сделать с помощью Binding
StringFormat
. И это более эффективно, чем наличие нескольких TextBlock
с разными стилями текста/фона.