4

我有一个应用程序,其中资源被正确地本地化。但是,数据绑定日期时间总是显示使用en-US格式。WP7日期没有国际化?

我在App类启动时检查,两者的CurrentCulture和的CurrentUICulture设置为预期的文化。

我没有日期格式用作据我所知。

如何我应该得到与当前文化格式化的日期?

+0

你有没有试过设置['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

+0

@AlexFilipovici我认为这些属性在Windows Phone 7中不可用。它是一个不同的框架。 – 2013-02-27 10:24:13

+0

你是对的,抱歉我的误导性提示。你可以在你的问题中添加一些代码示例吗? – 2013-02-27 10:26:07

回答

1

原来有一个非常简单的解决方案。

通过添加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}}" 

结果: 日期是在正确的文化呈现。

1

你的财产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"); 
1

与其将DateTime传递给视图并依赖绑定将其转换为正确的格式,则创建一个附加属性,该属性包装现有的属性,但应用适当的转换/表单阿廷格。
例如

public class MyViewModel 
{ 
    public DateTime StartDate { get; set; } 

    public string LocalizedStartDate 
    { 
     get 
     { 
      return this.StartDate.ToString(CultureInfo.CurrentUICulture); 
     } 
    } 
} 

,然后绑定:

<TextBlock Text="{Binding LocalizedStartDate}" .... />