我在我的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上的这篇文章。
解决方案是将LanguagePhoneApplicationPage属性设置为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/

10-12 14:54