CultureInfo格式化程序wp7

时间:2011-02-11 21:26:17

标签: windows-phone-7

我在WP7应用程序中使用ValueConverter

public class Formatter : IValueConverter
{

    #region IValueConverter Members

    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        if (parameter != null)
        {
            string formatterString = parameter.ToString();

            if (!string.IsNullOrEmpty(formatterString))
            {
                return string.Format(culture, formatterString, value);
            }
        }
        return value.ToString();
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        //Nothing to do - the Validation will handle the value correctness
        return value;
    }

    #endregion
}

然后我可以使用格式化日期,

<TextBlock Text="{Binding Path=CreatedOn, Converter={StaticResource FormatConverter}, ConverterParameter=\{0:MMM d\, hh:mm tt\}}" Foreground="#ff1e3250" VerticalAlignment="Center" FontSize="{StaticResource PhoneFontSizeSmall}" />

我的问题是:如何传递用户当前的文化信息?我知道我可以在上面的Binding中使用的ConveterCulture属性,但我不想传递硬编码的值,例如en-US。

我想尝试传递System.Globalization中CultureInfo.CurrentCulture属性的当前文化。

我尝试过使用类似的东西: x:静态全局:CultureInfo.CurrentCulture,但是我收到一个错误,静态未定义

PRATIK

1 个答案:

答案 0 :(得分:0)

正如您所述,在绑定上显式设置ConverterCulture属性会将您硬编码到单个区域,这并不理想。如果您未指定ConverterCulture属性,那么ConvertConvertBack方法中 culture 参数的值将使用{{3相反,但是从文档中不清楚如果未明确设置它将是什么值。

但是,如果您想知道用户当前在哪个区域运行,那么您可以忽略 culture 参数completelt并改为使用Language