我想在一个数据绑定的文本块前面添加文本:
<TextBlock Text="{Binding Title}" />
显示的文本是:"My title"
我想要展示的是:
This is "My title"
我想在一个数据绑定的文本块前面添加文本:
<TextBlock Text="{Binding Title}" />
显示的文本是:"My title"
我想要展示的是:
This is "My title"
StringFormat
属性: <TextBlock Text="{Binding Title, StringFormat=This is {0}}"></TextBlock>
查看此博客文章以获取更多信息:使用StringFormat属性在XAML中进行WPF String.Format格式化。
如果您想在绑定中完成此操作:
<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">
<TextBlock Text="{Binding Title, ConverterParameter=This is, Converter={StaticResource TextPrefixConverter}}" Foreground="#FFC8AB14" FontSize="28" />
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>
你好,可以按照以下方式进行书写:
<TextBlock>
<TextBlock>This is </TextBlock>
<TextBlock Text="{Binding Title}"></TextBlock>
</TextBlock>
只需要使用StringFormat格式化字符串。
<TextBlock Text="{Binding Title,StringFormat='This is {0}'}" Foreground="#FFC8AB14" FontSize="28" />
StringFormat
进行Binding
,并将其分配给TextBlock
的Text
属性。如果性能不是问题,且更喜欢XAML的可读性,则可以在TextBlock
中使用Run
另一种方法:<TextBlock Foreground="#FFC8AB14" FontSize="28">
This is <Run Text="{Binding Title}" />
</TextBlock>
TextBlock
的不同部分应用不同的样式(文本/背景颜色,斜体/粗体字,字体大小等),而使用Binding
的StringFormat
则无法实现。并且,这比使用具有不同文本/背景样式的多个TextBlock
更加高效。