我在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
答案 0 :(得分:0)
正如您所述,在绑定上显式设置ConverterCulture
属性会将您硬编码到单个区域,这并不理想。如果您未指定ConverterCulture
属性,那么Convert
和ConvertBack
方法中 culture 参数的值将使用{{3相反,但是从文档中不清楚如果未明确设置它将是什么值。
但是,如果您想知道用户当前在哪个区域运行,那么您可以忽略 culture 参数completelt并改为使用Language
。