我有一个文本块:
<TextBlock x:Name="someText" Text="{Binding ElementName=theList, Path=SelectedItem.Name, Mode=TwoWay}" />
如您所见,它绑定到另一个元素的选定项。现在,让我们假设,例如,所选项目说“你好,”。而且我想将我的名字附加到它(在 XAML 中,而不是代码隐藏中),以便它看起来像:“你好,箭头。”。我怎样才能做到这一点?
我有一个文本块:
<TextBlock x:Name="someText" Text="{Binding ElementName=theList, Path=SelectedItem.Name, Mode=TwoWay}" />
如您所见,它绑定到另一个元素的选定项。现在,让我们假设,例如,所选项目说“你好,”。而且我想将我的名字附加到它(在 XAML 中,而不是代码隐藏中),以便它看起来像:“你好,箭头。”。我怎样才能做到这一点?
尝试这个:
<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>
使用此配置,您唯一能做的就是在所选项目中包含该文本。所以,我推荐的是更多类似这些方面的东西:
<StackPanel Orientation="Horizontal">
<TextBlock x:Name="someText"
Text="{Binding ElementName=theList,
Path=SelectedItem.Name,
Mode=TwoWay}" />
<TextBlock x:Name="suffixText"/>
</StackPanel>
使用此配置,您可以提供所需的suffixText
任何方式并获得所需的结果。
您需要为此创建一个连接两个字符串的 MultiValueConverter。您可以将这些字符串从 xaml 传递给转换器。更多详情见文章