负数货币数值 XAML

10

我目前遇到了一个有关负数货币的格式问题。

以下是我的情况概述截图:

alt text

  1. 这是我在绑定中使用的StringFormat。(顺便说一句,我尝试过只用 {0:C})
  2. 如预期
  3. 当前计算机设置的负数货币数值
  4. 运行应用程序时的结果

为什么结果不是-0.08$?

您有任何关于我该如何处理的想法吗?

感谢您的时间。

更新:

我尝试使用转换器解决问题,以下是结果:

  • 我发现 Thread.CurrentThread.CurrentUICultureThread.CurrentThread.CurrentCulture 不同,所以我在我的App.xaml.cs中进行了修复。不幸的是,结果仍然相同。
  • 我尝试通过转换器显示我的值,以查看是否可以调试该问题。实际上接收到的文化参数是正确的,但是它的 CurrentNegativePatternThread.CurrentThread.CurrentCulture 不同。这可能是我遇到该问题的原因。目前,我将在转换器的 Convert 方法中使用以下代码:return ((double)value).ToString("C2", Thread.CurrentThread.CurrentCulture);

@Merlyn Morgan-Graham:不幸的是,这并不完全是我想要的。但还是谢谢你的提示! - esylvestre
@esylvestre:这就是为什么我没有把它作为答案给出的原因。我只是在想它是否有效,因为它可能会给你下一步去哪里的提示。 - Merlyn Morgan-Graham
1
愚蠢的问题:你绑定了负值吗? - Euphoric
除了转换器之外,您是否找到与此相关的任何内容? - Jonah Kunz
@JonahKunz 没有必要更改它,所以我没有寻找另一个解决方案。 - esylvestre
显示剩余2条评论
2个回答

1
尝试将 CurrentCulture 更改为 CurrentUICulture
FrameworkElement.LanguageProperty.OverrideMetadata(
    typeof(FrameworkElement),
    new FrameworkPropertyMetadata(XmlLanguage.GetLanguage(CultureInfo.CurrentUICulture.IetfLanguageTag))
);

请注意,这可能不会使用你的区域设置。 CultureInfo 对象确实描述了您的区域设置,但您使用的 IetfLanguageTag 是从特定区域中提取出来的。该区域不具备您对区域设置所做的调整。
或者,您可以查看绑定的 ConvertCulture 选项。这实际上确实采用了 CultureInfo

这是因为您无法指定特定文化的细节,而它使用文化的通用设置。我认为您可以通过使用绑定的ConverterCulture属性来实现这一点,但我认为这将很难应用。实际上,这确实需要一个CultureInfo,但看起来并不容易使用。 - Pieter van Ginkel
那么,您认为我目前正在使用的解决方案怎么样(请参见我的主要帖子中的更新 - 我正在谈论使用CurrentThread.CurrentCulture的转换器)? - esylvestre
是的,就像你说的,没错。但我仍然想要最好的 ;) - esylvestre


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