首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将多个值绑定到单个WPF TextBlock?

如何将多个值绑定到单个WPF TextBlock?
EN

Stack Overflow用户
提问于 2010-03-31 20:32:46
回答 4查看 212.1K关注 0票数 232

我目前正在使用下面的TextBlock绑定一个名为Name的属性的值

代码语言:javascript
复制
<TextBlock Text="{Binding Name}" />

现在,我想将另一个名为ID的属性绑定到同一个TextBlock

是否可以将两个或更多个值绑定到同一TextBlock?它能像Name + ID一样用简单的连接来完成吗?如果不能,还能用别的什么方法来实现呢?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-03-31 20:42:52

您可以将MultiBindingStringFormat属性结合使用。用法如下所示:

代码语言:javascript
复制
<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或更高版本中受支持。

票数 480
EN

Stack Overflow用户

发布于 2012-06-07 00:57:11

我知道这为时已晚,但我想我应该添加另一种方法来实现这一点。

您可以利用可以使用"Runs“设置Text属性这一事实,因此可以为每个绑定设置多个绑定。如果你不能访问MultiBinding (我在为Windows Phone开发时没有找到它),这是很有用的。

代码语言:javascript
复制
<TextBlock>
  <Run Text="Name = "/>
  <Run Text="{Binding Name}"/>
  <Run Text=", Id ="/>
  <Run Text="{Binding Id}"/>
</TextBlock>
票数 146
EN

Stack Overflow用户

发布于 2010-03-31 21:54:58

如果这些只是文本块(因此是单向绑定),而你只想将值连接起来,那么只需绑定两个文本块并将它们放在水平堆叠面板中即可。

代码语言:javascript
复制
    <StackPanel Orientation="Horizontal">
        <TextBlock Text="{Binding Name}"/>
        <TextBlock Text="{Binding ID}"/>
    </StackPanel>

这将显示文本(这是所有Textblock所做的),而不需要进行任何编码。你可以在它们上面加一个小的边距,使它们看起来正确。

票数 25
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2552853

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档