2017-04-24 19 views
0

更新:我使用C#.NET中使用的WinForms綁定級聯的文本

如果你有一個小數變量,例如價格,是否可以將文本字段(或標籤)的值綁定到其值加上的文本。在價格的例子中,這可能是一個貨幣代碼。所以在下面的例子中,我想創建一個綁定,以便文本字段文本是「5000歐元」。這是可能的,沒有創建一個新的屬性,返回兩者的組合?

實施例:

// I want to bind to a concatenation of theese two variables... 
public decimal price 
{ 
    get { return 5000; } 
} 

public string currencyCode 
{ 
    get { return "EUR"; } 
} 

// ...WITHOUT using this property 
public string priceAndCurrencyCode 
{ 
    get { return price + " " + currencyCode; } 
} 

回答

1

綁定具有的StringFormat

Text="{Binding Price, StringFormat={}{0} EUR" 

或者從代碼

<TextBlock.Text> 
    <MultiBinding StringFormat="{}{0} {1}"> 
     <Binding Path="Price"/> 
     <Binding Path="Currency"/> 
    </MultiBinding> 
</TextBlock.Text> 

或者花式格式化

<TextBlock FontSize="12"> 
    <TextBlock Text="{Binding Price}" Forground="Red"/> 
    <TextBlock Text="{Binding Currency}"/> 
</TextBlock> 
+0

我忘了提及我使用WinForms,這種方法仍然可行嗎? – Noceo

+0

哦,我看到了Binding並且假設了WPF。 – Firo

+0

我明白了。我不好澄清這一點是不好的。我希望我在WPF中工作,但現在我被困在WinForms中。 – Noceo

0

您也可以使用MultiBinding作爲文本塊及其StringFormat屬性,並根據需要定義格式。

1

首先,你有2個不同的變量,做2件不同的事情。使用第三個連接的並不是錯的。

對於使用某些字符串格式綁定的惰性編碼來說,實質上是錯誤的。它不會幫助您進一步編碼或保持可靠性。當你的第三個屬性可以在其他地方使用(綁定到標籤或其他)。

我知道我們(工程師/編碼員)本質上是懶惰的。但!多做一點工作以防止進一步的工作,這不是最好的懶惰嗎?

更多!編寫第三個變量並使用StringFormat綁定將花費您相當的時間。 (如果你碰巧學習它,StringFormat可能會更加耗費,即使學習它也是件好事。)

+1

這並不是說我不喜歡我當前的解決方案,但是你對懶惰的部分是正確的:-)。我只是想知道是否有更聰明的方法,但如果沒有,那就很好。 – Noceo

+0

如果你看別人的答案,你會看到有其他選擇。問題在於你稱之爲「更聰明」。在我看來,保持你的第一個選擇是聰明的(也許不是最聰明的)。 – Lostblue