我目前正在使用下面的TextBlock
绑定一个名为Name
的属性的值
<TextBlock Text="{Binding Name}" />
现在,我想将另一个名为ID
的属性绑定到同一个TextBlock
。
是否可以将两个或更多个值绑定到同一TextBlock
?它能像Name + ID
一样用简单的连接来完成吗?如果不能,还能用别的什么方法来实现呢?
发布于 2010-03-31 20:42:52
您可以将MultiBinding
与StringFormat
属性结合使用。用法如下所示:
<TextBlock>
<TextBlock.Text>
<MultiBinding StringFormat="{}{0} + {1}">
<Binding Path="Name" />
<Binding Path="ID" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
如果将Name
的值设为Foo
,将ID
的值设为1
,那么TextBlock中的输出就是Foo + 1
。
Note:
指出这仅在.NET 3.5 SP1和3.0 SP2或更高版本中受支持。
发布于 2012-06-07 00:57:11
我知道这为时已晚,但我想我应该添加另一种方法来实现这一点。
您可以利用可以使用"Runs“设置Text属性这一事实,因此可以为每个绑定设置多个绑定。如果你不能访问MultiBinding (我在为Windows Phone开发时没有找到它),这是很有用的。
<TextBlock>
<Run Text="Name = "/>
<Run Text="{Binding Name}"/>
<Run Text=", Id ="/>
<Run Text="{Binding Id}"/>
</TextBlock>
发布于 2010-03-31 21:54:58
如果这些只是文本块(因此是单向绑定),而你只想将值连接起来,那么只需绑定两个文本块并将它们放在水平堆叠面板中即可。
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Name}"/>
<TextBlock Text="{Binding ID}"/>
</StackPanel>
这将显示文本(这是所有Textblock所做的),而不需要进行任何编码。你可以在它们上面加一个小的边距,使它们看起来正确。
https://stackoverflow.com/questions/2552853
复制相似问题