C# · 12月 30, 2021

c# – 负货币数量XAML

我对我的负货币编号的当前格式有一点问题.
这是截图恢复我的情况.

>这是我在绑定中使用StringFormat的方式. (BTW,我只尝试{0:C})
>如预期
>我的电脑的当前设置为负货币号码
4.
>当我运行我的应用程序时的结果

为什么结果不是-0,08 $?

有什么想法应该如何进行?

谢谢你的时间.

更新:

我试图用转换器解决问题,其结果如下:

>我发现Thread.CurrentThread.CurrentUICulture与Thread.CurrentThread.CurrentCulture不一样,所以我把它修复到我的App.xaml.cs.不幸的是,结果相同.
我试图通过转换器显示我的值,看看我是否可以调试问题.事实是在Convert方法的参数中收到的文化是可以的,但它的CurrentNegativePattern与Thread.CurrentThread.CurrentCulture中的相同.这可能是为什么我有这个问题的原因.暂时我会用这个:return((double)value).ToString(“C2”,Thread.CurrentThread.CurrentCulture);在我的转换器的转换方法.

解决方法 尝试将CurrentCulture更改为CurrentUICulture: FrameworkElement.LanguageProperty.OverrideMetadata( typeof(FrameworkElement),new FrameworkPropertyMetadata(XmlLanguage.GetLanguage(CultureInfo.CurrentUICulture.IetfLanguageTag)));

请注意,这可能不会使用您的区域设置. CultureInfo对象确实描述了您的区域设置,但是您使用IetfLanguageTag所做的工作正在将其提取到特定文化.该文化没有对您的区域设置进行调整.

或者,您可以查看绑定的ConvertCulture选项.这实际上需要一个CultureInfo.