2010-12-01 49 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的是被綁定字符串屬性。

相關問題