Wpf 关于IValueConverter实现的CultureInfo

Wpf 关于IValueConverter实现的CultureInfo,wpf,silverlight-3.0,cultureinfo,valueconverter,Wpf,Silverlight 3.0,Cultureinfo,Valueconverter,当ValueConverter用作绑定的一部分时,Convert函数的参数之一是System.Globalization.CultureInfo对象 有人能告诉我这个文化对象的信息来自哪里吗 我有一些基于这种文化的日期格式代码。当我访问计算机上托管的silverlight控件时,它会正确设置日期格式(使用d/MM/yyyy格式,在我的计算机上设置为短日期格式)。当我访问托管在不同服务器(从客户端计算机)上的同一控件时,日期的格式为MM/dd/yyyy hh:MM:ss,这是完全错误的。巧合的是,

当ValueConverter用作绑定的一部分时,
Convert
函数的参数之一是
System.Globalization.CultureInfo
对象

有人能告诉我这个文化对象的信息来自哪里吗

我有一些基于这种文化的日期格式代码。当我访问计算机上托管的silverlight控件时,它会正确设置日期格式(使用d/MM/yyyy格式,在我的计算机上设置为短日期格式)。当我访问托管在不同服务器(从客户端计算机)上的同一控件时,日期的格式为MM/dd/yyyy hh:MM:ss,这是完全错误的。巧合的是,服务器上的区域设置设置与我的客户端计算机相同

这是我的值转换器的代码:

    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        if (value is DateTime)
        {
            if (parameter != null && !string.IsNullOrEmpty(parameter.ToString()))
                return ((DateTime)value).ToString(parameter.ToString());
            else
                return ((DateTime)value).ToString(culture.DateTimeFormat.ShortDatePattern);
        }
        return value;
    }

基本上,可以将特定格式指定为转换器参数,但如果不是,则使用区域性对象的短日期模式。

以下是一篇简短的文章:


嗯,这的确很有趣。我不希望服务器与之有任何关系,因为Silverlight在这两种情况下都完全在客户机上运行。但我会运行Fiddler,看看HTTP头中是否有指定区域设置或语言的内容。我不是HTTP/IIS方面的专家,所以我不知道这是否是典型的,但如果服务器指定了区域设置,浏览器可能会将其用作默认的CurrentCulture


但看看Reflector,您的问题的答案是它使用CultureInfo.CurrentUICulture,除非指定了目标元素的Language属性,在这种情况下,将使用该属性。您还可以在绑定本身上设置转换器文化,这似乎是最高优先级。

谢谢josh,问题已经解决,请参阅文章中的“我的编辑”。服务器不应该对文化有任何影响,因此我感到困惑(今天早上我更新了错误的服务器)。我已经将你的答案标记为答案,因为根据以下问题,它在技术上更为正确:)干杯,托德-请参阅我对文章的编辑。我已经给了你一张赞成票。