翻译绑定上的验证错误

时间:2013-07-10 15:19:11

标签: c# wpf binding translation cultureinfo

问题是,如何将系统验证/绑定错误翻译成其他语言?详细信息如下:我得到了这个wpf应用程序,它将是多语言的,例如,对一组项目进行网格绑定,下面示例中的一列DataLancamentoEdicao是一个绑定到DateTime:

<DataGridTextColumn Header="Data" Binding="{Binding SomeDateTime, ValidatesOnDataErrors=True, Mode=TwoWay, StringFormat=d}" />

班级是

public class SomeClass: INotifyPropertyChanged 
{ 
   public DateTime SomeDateTime {get {/*...*/}; set {/*...*/}}
}

如果用户输入有效日期一切正常,但如果用户输入错误的一些垃圾,如“blablabla” wpf报告,正如预期的那样,“Value'blablabla'无法转换“,在某些情况下报告字符串未被识别为有效的DateTime 。此DateTime是一个示例,因为还有其他绑定小数,整数也遇到相同的问题。

Text Message

这对于英国人来说显然是好的,但是我需要将它们翻译成葡萄牙语以及用户在登录屏幕上可用的其他语言。

我已经设置了线程的文化和wpf的语言,如下所示

        Thread.CurrentThread.CurrentCulture = UserChoosenCulture;
        Thread.CurrentThread.CurrentUICulture = UserChoosenCulture;
        FrameworkElement.LanguageProperty.OverrideMetadata(
            typeof(FrameworkElement),
            new FrameworkPropertyMetadata(System.Windows.Markup.XmlLanguage.GetLanguage(UserChoosenCulture.IetfLanguageTag)));

如何翻译这些字符串?是否有一些资源可以覆盖以实现这一目标?

谢谢。

1 个答案:

答案 0 :(得分:0)

<OPINION>Foremost, you should not rely on exceptions as error reports to the end-user. Exceptions are for yourself as a programmer.</OPINION>

一种有保证的方法是编写自己的转换器或validationRule(无论你想要多少控制),自己捕获异常,并输出自己翻译的消息。

验证不应该抛出异常。我不确定你是如何达到用户的。我实施验证时只是得到一个红色边框。

编辑:从我读过的内容看来,它们似乎可以被翻译。我担心的是你是否安装了该语言包。等