3

我正在尝试制作一个货币格式的文本框,但它不起作用。

XAML:

<TextBox x:Name="_valueTxt" Text="{Binding Amount, StringFormat={}{0:C}}"/>

代码背后:

...
string _amount;
public string Amount
{
    get { return _amount; }
    set { _amount = value; }
}
...
public MyWindow()
{
    Amount = "1235533";
    InitializeComponent();
}

我希望在我的文本框中看到的值:

$1.235.533,00

但它显示:

1235533

4

2 回答 2

6

StringFormat如果您绑定到数字,则只能与数字格式字符串一起使用。您的Amount属性已经是 a string,因此您将按原样获得它。

如果您将Amount属性更改为数值,您将得到您所期望的,即:

double _amount;
public double Amount
{
    get { return _amount; }
    set { _amount = value; }
}
...
public MyWindow()
{
    Amount = 1235533;
    InitializeComponent();
}

请注意,您可能还想制作AmountaDependencyProperty或让它实现INotifyPropertyChanged。这将允许对值的更改反映在用户界面中。

于 2013-06-11T16:58:30.670 回答
0
internal class MyClass
{
    private double amount = 1209382;

    public string Amount
    {
        get { return string.Format("{0:C}", amount); }
    }
}

internal class Program
{
    private static void Main(string[] args)
    {

        MyClass instance = new MyClass();
        Console.WriteLine(instance.Amount);

        Console.ReadKey();
    }
}
于 2013-06-11T17:05:53.450 回答