我们可以在绑定表达式中将两个属性连接在一起吗?如果可能,没有转换器或没有编写两个文本块并单独设置它们?
答案 0 :(得分:85)
如果您想在一个FirstName
中展示LastName
和TextBlock
,那么您可以这样做:
<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不会开箱即用,但是这个家伙已经抛出了一些可能有用的东西:
如果这看起来有点流氓,那么可能尝试在对象上放置一个组合值属性作为Binding机制的帮助器,如:
public string FullName {
get { return this.FirstName + " " + this.LastName; }
}
答案 3 :(得分:6)
在WPF中可以在MultiBinding和StringFormat的帮助下实现。但不幸的是,不是在Silverlight中。
答案 4 :(得分:3)
您可以使用执行连接的getter添加新属性。
假设您拥有FirstName
和LastName
属性。然后,您可以按如下方式定义Name
属性:
public string Name { get { return FirstName + " " + LastName; } }
这样可以正常工作,但是您应该知道您不能对只读属性进行双向绑定。此外,您可能希望为源属性的setter中的连接属性实现属性更改通知。
答案 5 :(得分:3)
如果您需要添加任何字符串,请尝试使用它。在这里我添加&#34;%&#34;在Windows Phone中绑定文本后。
<TextBlock Text="{Binding Path=clouds.all, StringFormat=\{0\}%}"/>