我们可以在数据绑定中连接两个属性吗?

时间:2010-12-01 14:39:16

标签: wpf silverlight-4.0

我们可以在绑定表达式中将两个属性连接在一起吗?如果可能,没有转换器或没有编写两个文本块并单独设置它们?

6 个答案:

答案 0 :(得分:85)

如果您想在一个FirstName中展示LastNameTextBlock,那么您可以这样做:

<TextBlock>
     <Run Text="{Binding FirstName}" />
     <Run Text="   " /> <!-- space -->
     <Run Text="{Binding LastName}" />
</TextBlock>

现在,TextBlock的Text属性为"Sachin Tendulkar",如果出现以下情况,将会显示:

FirstName = Sachin
LastName  = Tendulkar

希望有所帮助。

答案 1 :(得分:14)

<TextBlock.Text>
   <MultiBinding StringFormat="{}{0} , {1}">
     <Binding Path="data1" />
     <Binding Path="data2" />
    </MultiBinding>
</TextBlock.Text>

data1和data2是绑定的字符串属性。

答案 2 :(得分:13)

像alpha-mouse建议的MultiBinding不会开箱即用,但是这个家伙已经抛出了一些可能有用的东西:

http://www.olsonsoft.com/blogs/stefanolson/post/Improvements-to-Silverlight-Multi-binding-support.aspx

如果这看起来有点流氓,那么可能尝试在对象上放置一个组合值属性作为Binding机制的帮助器,如:

public string FullName {
   get { return this.FirstName + " " + this.LastName; }
}

答案 3 :(得分:6)

在WPF中可以在MultiBinding和StringFormat的帮助下实现。但不幸的是,不是在Silverlight中。

答案 4 :(得分:3)

您可以使用执行连接的getter添加新属性。

假设您拥有FirstNameLastName属性。然后,您可以按如下方式定义Name属性:

public string Name { get { return FirstName + " " + LastName; } }

这样可以正常工作,但是您应该知道您不能对只读属性进行双向绑定。此外,您可能希望为源属性的setter中的连接属性实现属性更改通知。

答案 5 :(得分:3)

如果您需要添加任何字符串,请尝试使用它。在这里我添加&#34;%&#34;在Windows Phone中绑定文本后。

<TextBlock Text="{Binding Path=clouds.all, StringFormat=\{0\}%}"/>