我有一个应用程序,其中资源被正确地本地化。但是,数据绑定日期时间总是显示使用en-US格式。WP7日期没有国际化?
我在App类启动时检查,两者的CurrentCulture和的CurrentUICulture设置为预期的文化。
我没有日期格式用作据我所知。
如何我应该得到与当前文化格式化的日期?
我有一个应用程序,其中资源被正确地本地化。但是,数据绑定日期时间总是显示使用en-US格式。WP7日期没有国际化?
我在App类启动时检查,两者的CurrentCulture和的CurrentUICulture设置为预期的文化。
我没有日期格式用作据我所知。
如何我应该得到与当前文化格式化的日期?
原来有一个非常简单的解决方案。
通过添加IValueConverter并且在绑定表达式利用转换器,但忽略了培养参数,该格式化完美。
对于每种不同的格式,您都需要一个转换器(如果您不需要参数)。
转换器(去除来自样品的属性):
public class DateConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
DateTime date = (DateTime)value;
return date.ToShortDateString();
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
string strValue = value as string;
DateTime resultDateTime;
if (DateTime.TryParse(strValue, out resultDateTime))
{
return resultDateTime;
}
return DependencyProperty.UnsetValue;
}
}
命名空间
xmlns:conv="clr-namespace:Sjofartsverket.LotsPDA20.Client.Converters"
资源
<conv:DateConverter x:Key="dateConverter" />
绑定表达式:
<TextBlock Text="{Binding StartDate, Converter={StaticResource dateConverter}}"
结果: 日期是在正确的文化呈现。
你的财产StartDate
的数据类型更改为字符串:
string _startDate;
public string StartDate
{
get { return _startDate; }
set
{
_startDate = value;
OnPropertyChanged("StartDate");
}
}
当值分配给StartDate
,使用ToString()
方法的以下重载之一,在方便:
StartDate = DateTime.Now.ToString();
StartDate = DateTime.Now.ToString("d");
StartDate = DateTime.Now.ToString("D");
与其将DateTime传递给视图并依赖绑定将其转换为正确的格式,则创建一个附加属性,该属性包装现有的属性,但应用适当的转换/表单阿廷格。
例如
public class MyViewModel
{
public DateTime StartDate { get; set; }
public string LocalizedStartDate
{
get
{
return this.StartDate.ToString(CultureInfo.CurrentUICulture);
}
}
}
,然后绑定:
<TextBlock Text="{Binding LocalizedStartDate}" .... />
你有没有试过设置['System.Globalization.CultureInfo.DefaultThreadCurrentUICulture'](http://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo.defaultthreadcurrentuiculture.aspx)和['System。 Globalization.CultureInfo.DefaultThreadCurrentCulture'(http://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo.defaultthreadcurrentculture.aspx)到预期的文化? – 2013-02-27 10:07:42
@AlexFilipovici我认为这些属性在Windows Phone 7中不可用。它是一个不同的框架。 – 2013-02-27 10:24:13
你是对的,抱歉我的误导性提示。你可以在你的问题中添加一些代码示例吗? – 2013-02-27 10:26:07