2010-12-01 31 views
30

我们可以在绑定表达式中将两个属性连接在一起吗?如果可能的话没有转换器或者没有写两个文本块并分别设置它们?我们可以连接数据绑定中的两个属性吗?

+0

看看这里http://stackoverflow.com/questions/541896/concatenate-strings-instead-of-using-a-stack-of-textblocks – 2014-12-08 11:48:22

回答

13

如α-鼠标提示MultiBinding将无法正常工作的开箱,但是这家伙扔东西在一起,这可能有助于:

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

如果这似乎有点无赖,然后也许尝试在您的对象上添加一个组合的值属性作为绑定机制的帮助器,如:

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

使用`<运行文本= “...”/ >`是一种更简洁的XAML解决方案(请参阅下面的其他答案)。 – qJake 2013-01-02 06:29:11

6

MultiBinding和StringFormat的帮助下,它可能在WPF中。但不幸的是在Silverlight中。

3

您可以使用执行串联的getter添加一个新属性。

假设您有FirstNameLastName属性。然后,您可以定义一个Name属性,如下所示:

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

这将很好地工作,但你应该知道,你不能做双向的只读属性的绑定。您也可能想要为源属性的设置器中的连接属性实现属性更改通知。

79

如果你想显示,说FirstNameLastName,在一个单一的TextBlock,那么你可以这样做:

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

现在,TextBlock中的Text属性将为"Sachin Tendulkar"并显示,如果:

FirstName = Sachin 
LastName = Tendulkar 

希望有所帮助。

+4

正是我需要的。谢谢! – MattAitchison 2011-10-27 20:32:17

+0

您在每个Run语句中忘记了/>。否则,帮助我很多! – swinefeaster 2011-12-31 23:41:43

2

如果您需要添加任何字符串,然后尝试它。这里我在windows phone中绑定文本后添加“%”。

<TextBlock Text="{Binding Path=clouds.all, StringFormat=\{0\}%}"/> 
8
<TextBlock.Text> 
    <MultiBinding StringFormat="{}{0} , {1}"> 
    <Binding Path="data1" /> 
    <Binding Path="data2" /> 
    </MultiBinding> 
</TextBlock.Text> 

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

相关问题