2009-06-23 72 views
10

如何绑定单个TextBlock以表示“Hi,Jeremiah”?如何正确添加前缀(或后缀)到XAML中的数据绑定?

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

寻找一个优雅的解决方案。那里有什么?我试图避免为每个前缀/后缀组合编写一个转换器。

+0

看起来你接受的答案可能是WPF只有 - 你可能会删除Silverlight标签。 – 2009-06-23 21:23:33

回答

23

如果您只需要插入一个值,则可以使用Binding的StringFormat属性。请注意,此需要.NET 3.5 SP1(或.NET 3.0 SP2),因此只有在可以指望拥有最新Service Pack的生产环境时才使用它。

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

如果你想插入两个或多个不同的界限值,我通常只是做与包含多个的TextBlocks,例如方向=“横向”一个StackPanel:

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

确保你已经安装了3.5SP1来使用它。 – rmoore 2009-06-23 19:31:23

+0

谢谢!它非常棒! – Jeremiah 2009-06-23 19:31:59

0

我认为这应该做到这一点。

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

校正(未成年人)@Joe白的解决方案

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

单引号都需要申请的StringFormat成功
为我工作:)