StringFormat无法处理TextBox

时间:2013-06-11 16:53:09

标签: wpf textbox currency mask string-formatting

我正在尝试制作货币格式化的文本框,但它无效。

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

2 个答案:

答案 0 :(得分:6)

如果您绑定了某个数字,则只能将StringFormat与数字格式字符串一起使用。您的Amount媒体资源已经是string,因此您可以按原样获取。

如果您将Amount属性更改为数值,您将获得预期的结果,即:

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

请注意,您可能还希望将Amount设为DependencyProperty或让其实施INotifyPropertyChanged。这将允许更改值以反映在用户界面中。

答案 1 :(得分: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();
    }
}