将输入文本框设置为货币格式(WPF MVVM)

10

我刚开始学习WPF,希望有人能帮我如何将TextBox格式化为货币格式?在我的TextBox中,只能输入带有2位小数点的数字。 谢谢。


不,一点都不难。但值得注意的是,提问者在这个论坛感到如此受欢迎,以至于他们又离开了。 - darbid
2个回答

14

你是在寻找类似这样的东西吗?

<TextBox Text="{Binding Path=Txt, StringFormat=C}"/>

这将显示货币符号,根据用户系统设置,该设置不一定与数据库中的货币对应。 - eMko
1
或者你有其他数据源 :) 。你的解决方案肯定比我的更干净(点赞),但它有一个缺陷,就是你无法控制向用户显示哪种货币符号,因此不一定与数据相对应。 - eMko
不,你说得很对,我的解决方案是最简单的答案,但在现实世界中并不真正有用 :-)。我没有写更详细的答案,因为问题是开放式的,有成千上万种可能的解决方案... - rhe1980

3
你可以使用类似这样的东西。
 <TextBox TextAlignment="Right"
      Text="{Binding Price,
           UpdateSourceTrigger=PropertyChanged,
           StringFormat='#.00',
           ConverterCulture={x:Static sysglb:CultureInfo.CurrentCulture}}"/>

这会强制文本右对齐,并以类似于 105.00 或 19.95 的格式显示,取决于用户系统设置,可以根据需要添加货币符号到字符串格式中。

编辑:抱歉,我已习惯自动导入命名空间。在顶级元素(Usercontrol、Window 等)中添加:

<UserControl x:Class="..."
     ...
     xmlns:sysglb="clr-namespace:System.Globalization;assembly=mscorlib"
     ...
>

谢谢您的帮助,我尝试了这段代码,但为什么我不能使用sysglb:CultureInfo.CurrentCulture}呢?*对不起我的愚蠢问题 >.< - user2473454
如果您不使用ReSharper插件(嘿!它值得购买!好吧,我有偏见,因为我使用该公司的其他产品...),则命名空间不会自动导入。我会在我的答案中添加它。 - eMko
@user2473454 我遇到了同样的问题... - AndyUK

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接