如何将常规文本附加到已经绑定到其文本属性的TextBlock上
本文关键字:文本 绑定 属性 TextBlock 常规 | 更新日期: 2023-09-27 17:49:33
我有一个TextBlock:
<TextBlock x:Name="someText" Text="{Binding ElementName=theList, Path=SelectedItem.Name, Mode=TwoWay}" />
如您所见,它被绑定到另一个元素的选中项。现在,让我们假设,例如,选中的项目显示"Hello,"。我想把我的名字附加到它后面(在XAML中,而不是在代码后面),这样它读起来就像:"Hello, Arrow。"我该怎么做呢?
试试这个:
<TextBlock x:Name="someText" TextWrapping="NoWrap">
<Run Text="{Binding ElementName=theList, Path=SelectedItem, Mode=TwoWay}" />
<Run Text=" Arrow." />
</TextBlock>
XAML解决方案尚不支持Metro 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>
使用这种配置,您唯一可以做的就是将该文本放入所选项中。所以,我的建议是这样的:
<StackPanel Orientation="Horizontal">
<TextBlock x:Name="someText"
Text="{Binding ElementName=theList,
Path=SelectedItem.Name,
Mode=TwoWay}" />
<TextBlock x:Name="suffixText"/>
</StackPanel>
有了这个配置,你可以以任何你想要的方式提供suffixText
并得到你想要的结果。
您需要为此创建一个MultiValueConverter,它连接两个字符串。您可以将这些字符串从xaml传递给转换器。更多细节见文章