更新:我正在使用带有WinForms的C#.NET
如果你有一个十进制变量,例如价格,是否可以将文本字段(或标签)的值绑定到其值加文本。在价格示例中,可以是货币代码。因此,在下面的示例中,我想创建一个绑定,以便文本字段文本为“5000 EUR”。这是否可行,没有创建一个返回两者组合的新属性?
示例:
// 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; }
}
答案 0 :(得分: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>
答案 1 :(得分:1)
首先,您有2个不同的变量可以完成2个不同的事情。使用第三个连接的并没有错。
使用某种字符串格式绑定进行延迟编码的网络钓鱼本质上是错误的。它无助于您进一步编码或维护。当你的第三个属性可能在别处有一些用途(绑定到标签或其他)。
我知道我们(工程师/程序员)本质上是懒惰的。但!为了防止进一步的工作而多做一点工作,这不是最好的懒惰吗?
更多!编写第三个变量并使用StringFormat绑定将花费相当多的时间。 (如果你碰巧学习它,StringFormat可能会更加消耗。即使学习它也是一件好事。)
答案 2 :(得分:0)
您还可以将MultiBinding与其StringFormat属性一起用于文本块,并根据需要定义格式。