绑定到连接文本

时间:2017-04-24 08:30:38

标签: c# .net winforms data-binding

更新:我正在使用带有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; }
}

3 个答案:

答案 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属性一起用于文本块,并根据需要定义格式。