我在我的WindowsPhone7中创建了一个值转换器…
public class MyConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
// ...
}
// ...
}
…像这样使用它…
<TextBlock Text="{Binding SomeField, Converter={StaticResource MyConverter}, ConverterParameter=SomeParameter}" <!-- ... --> />
我的问题是:convert方法的
argument
区域性始终是“en-us”,即使我将windows phone设备(或模拟器)的区域性更改为德语德国,culture
参数仍为英语。 最佳答案
不是虫子,是故意的行为。请参阅msconnectWPF Binding uses the wrong CurrentCulture by default上的这篇文章。
解决方案是将Language
的PhoneApplicationPage
属性设置为currentculture,如下所示:
Language = XmlLanguage.GetLanguage(
Thread.CurrentThread.CurrentCulture.TwoLetterISOLanguageName);
或者使用
Language
属性在xaml中指定区域性,如下所示:<TextBlock Language="de-DE" Text="..." />
或是它自己
<phone:PhoneApplicationPage Language="de-DE" ...
但更好的解决方案是不使用依赖于
PhoneApplicationPage
参数的值转换器。编辑:我在博客中提到了另一种解决方案:DateTime formatting in a ValueConverter
关于c# - IValueConverter在Windows Phone 7中获得错误的区域性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7080566/