在UI上显示反斜杠而不是货币符号

时间:2016-07-05 03:30:32

标签: c# wpf windows cjk

我试图在WPF TextBlock上打印\,但我得到了货币符号。我想这是因为系统是CJK Windows,所以添加了文化信息代码。

CultureInfo useng = new CultureInfo("en-US");
Thread.CurrentThread.CurrentCulture = useng;
Thread.CurrentThread.CurrentUICulture = useng;

问题仍然存在,我的想法用完了,所以我使用了这种美味的破解方法。

CultureInfo useng = new CultureInfo("en-US");
useng.NumberFormat.CurrencySymbol = "\\";
Thread.CurrentThread.CurrentCulture = useng;
Thread.CurrentThread.CurrentUICulture = useng;

我想知道是否有正确的解决方法。

更新TextBlock的代码使用Timer对象中的TextBlock.Text并从List中获取Char对象,并将Char声明为' \\'

Dispatcher.Invoke(new Action(() => { tb.Text = "" + listCharEnumerator.Current; }), System.Windows.Threading.DispatcherPriority.Render);

Code in full available on github. Small project, really.

请注意,上述解决方法不适用于此分支。

1 个答案:

答案 0 :(得分:0)

当您等待调度程序运行时,问题的来源listCharEnumerator.Current正在发生变化,所以当调度程序有机会运行时,它已经从\\移开并转移到什么可能是集合中的最后一项(可能是货币符号)。

解决这个问题的方法是在调度程序使用调度程序内的局部变量之前,将枚举数的值输入局部变量。

var temp = listCharEnumerator.Current;
Dispatcher.Invoke(new Action(() => { tb.Text = "" + temp; }), System.Windows.Threading.DispatcherPriority.Render);