在我的 silverlight 4 MVVM 应用程序中,我可以在运行时切换语言:
public void SetLanguage(string language)
{
var culture = new CultureInfo(language);
Thread.CurrentThread.CurrentUICulture = culture;
Thread.CurrentThread.CurrentCulture = culture;
// ...
}
对于输入,我只是添加了“ValidatesOnException=true”以防出现转换问题,它就完成了工作。但是默认的异常消息是在我的操作系统的文化中,而不是在手动选择的文化中。
在 exception message localization 上的这个线程中这个想法是改变我所做的 CurrentCulture 和 CurrentUICulture。所以我有点卡住了。
我能做些什么 ?
谢谢 :)
编辑:我尝试在 convertback 方法中使用带有自定义异常的自定义转换器,以验证用户的输入。问题,validatesOnException 不会捕获 convertback 方法中的异常,它会破坏应用程序。
编辑2:澄清->如果我有一个绑定(bind)到文本框的小数属性,并且我在这个文本框中输入“blabla”,我想看看有问题,我希望消息在运行时语言环境中并且不是操作系统区域设置。
我不能在我的属性 setter 中引发异常,因为我从来没有到达那里,默认转换器在此之前引发它自己的异常。
我希望这很清楚。如果我可以帮助你帮助我,请不要犹豫:)
最佳答案
也许你一开始并没有改变文化。
我建议您尝试此链接中第一个答案中给出的方法:
Change culture of Silverlight application
关于Silverlight ValidatesOnException 默认消息本地化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7399822/