我想将文本添加到绑定到文本块的结果中:
<TextBlock Text="{Binding Title}" Foreground="#FFC8AB14" FontSize="28" />
显示的文字是:
" My title "
我想要的是:
This is "My title"
答案 0 :(得分:41)
您可以使用绑定的StringFormat
属性:
<TextBlock Text="{Binding Title, StringFormat=This is {0}}"></TextBlock>
查看此博客文章了解更多信息:WPF String.Format in XAML with the StringFormat attribute。
答案 1 :(得分:8)
如果你想在绑定中这样做:
<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">
答案 2 :(得分:4)
您可以使用转换器执行此操作。
<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>
答案 3 :(得分:3)
您好,您可以写如下:
<TextBlock>
<TextBlock>This is </TextBlock>
<TextBlock Text="{Binding Title}"></TextBlock>
</TextBlock>
答案 4 :(得分:3)
只需使用StringFormat进行格式化。
<TextBlock Text="{Binding Title,StringFormat='This is {0}'}" Foreground="#FFC8AB14" FontSize="28" />
答案 5 :(得分:0)
此处就效果而言,最好的方法是使用StringFormat
Binding
并将其分配给Text
的{{1}}属性1}}。
但是,如果不考虑性能,并且首选XAML可读性,则另一种方法是在TextBlock
内使用Run
:
TextBlock
此外,通过这种方式,您可以将不同的样式(文字/背景颜色,斜体/粗体字体,字体大小等)应用到<TextBlock Foreground="#FFC8AB14" FontSize="28">
This is <Run Text="{Binding Title}" />
</TextBlock>
的不同部分,这是您无法做到的使用TextBlock
&#39; s Binding
。这比具有不同文本/背景样式的多个StringFormat
更有效。