2012-12-27 34 views
6

我有一个TextBlock:如何将常规文本添加到已经具有绑定到其文本属性的TextBlock?

<TextBlock x:Name="someText" Text="{Binding ElementName=theList, Path=SelectedItem.Name, Mode=TwoWay}" /> 

正如你所看到的,它被绑定到另一个元素的选择项。现在,让我们说,例如,选定的项目说“你好,”。我想追加我的名字(在XAML中,而不是代码隐藏),以便它看起来像:“Hello,Arrow。”。我怎样才能做到这一点?

回答

3

使用此配置,您可以做的唯一的事情就是在选定的项目中包含该文本。所以,我建议的东西沿着这些线路更多:有了这个配置

<StackPanel Orientation="Horizontal"> 
    <TextBlock x:Name="someText" 
     Text="{Binding ElementName=theList, 
         Path=SelectedItem.Name, 
         Mode=TwoWay}" /> 
    <TextBlock x:Name="suffixText"/> 
</StackPanel> 

你可以提供你想要的任何suffixText方式,让你正在寻找的结果。

0

您需要为此创建一个MultiValueConverter,它连接两个字符串。您可以将这些字符串从xaml传递给转换器。更多信息请参考article

10

试试这个:在地铁XAML

<TextBlock x:Name="someText" TextWrapping="NoWrap">    
    <Run Text="{Binding ElementName=theList, Path=SelectedItem, Mode=TwoWay}" /> 
    <Run Text=" Arrow." /> 
</TextBlock> 

XAML的解决方案尚未公布:

您可以使用StringFormat

<TextBlock x:Name="someText" Text="{Binding ElementName=theList, Path=SelectedItem, Mode=TwoWay, StringFormat={}{0} Arrow.}" /> 

您也可以使用MultiBinding和StringFormat

<TextBlock> 
    <TextBlock.Text> 
      <MultiBinding StringFormat="{}{0} Arrow."> 
       <Binding ElementName="theList" Path="SelectedItem.Name" />      
      </MultiBinding> 
    </TextBlock.Text> 
</TextBlock> 
+1

至于StringFormat:在类型绑定中未找到'Property'StringFormat'。'并且'MultiBinding在Windows Metro风格的项目中不受支持。' – Arrow

+4

@Arrow你是对的。用Run运行我的第一个解决方案。 – kmatyaszek

+3

具有多个“运行”的'TextBlock'绝对是实现这一目标的方法。 –

相关问题