我有一个TextBlock:
<TextBlock x:Name="someText" Text="{Binding ElementName=theList, Path=SelectedItem.Name, Mode=TwoWay}" />
正如您所看到的,它被绑定到另一个元素的选定项目。现在,让我们说,例如,所选项目显示“你好”。我想把它的名字附加到它上面(在XAML中,而不是代码隐藏),所以它的内容如下:“Hello,Arrow。”。我怎么能这样做?
答案 0 :(得分:11)
试试这个:
<TextBlock x:Name="someText" TextWrapping="NoWrap">
<Run Text="{Binding ElementName=theList, Path=SelectedItem, Mode=TwoWay}" />
<Run Text=" Arrow." />
</TextBlock>
Metro XAML尚未提供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 :(得分:3)
使用此配置,您唯一能做的就是在所选项目中包含该文本。所以,我建议的更多内容如下:
<StackPanel Orientation="Horizontal">
<TextBlock x:Name="someText"
Text="{Binding ElementName=theList,
Path=SelectedItem.Name,
Mode=TwoWay}" />
<TextBlock x:Name="suffixText"/>
</StackPanel>
使用此配置,您可以以任何方式提供suffixText
,并获得您正在寻找的结果。
答案 2 :(得分:0)
你需要为此创建一个MultiValueConverter,它连接两个字符串。您可以将这些字符串从xaml传递到转换器。更多详情请参阅article