IValueConverter在DateTime中使用了错误的区域性



Hi下面的代码用于将DateTime格式转换为当前线程区域性格式

public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value is DateTimeOffset?)
{
var dto = (DateTimeOffset?)value;
return dto.Value.ToString("t", culture);
}
return null;
}

但是区域性参数中的DateTimeFormat并没有更新到当前的系统日期时间格式,而是使用了固定格式,如HH:mm-tt。

解决方法是从当前线程设置语言,如下所示,我们在应用程序中已经这样做了。Xaml但仍然是DateTimeFormat将具有默认格式。

//修复特定于区域性的绑定格式。请参阅此链接:WPF绑定字符串格式短日期字符串

this.Language = System.Windows.Markup.XmlLanguage.GetLanguage(Thread.CurrentThread.CurrentCulture.IetfLanguageTag);

我浏览了一些关于这方面的博客,看起来这是WPF中的一个bug。有些人建议不要依赖DateTime的区域性,因为DateTimePicker应该提供一个格式化为本地线程区域性的选定日期。如果我们删除ToString((中的区域性参数,这会很好。

请提供您的建议或解决方案:(

也许您还需要在WPF控件上设置语言

(也在App.xaml.cs中(

FrameworkElement.LanguageProperty.OverrideMetadata(typeof(FrameworkElement), new FrameworkPropertyMetadata(XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag)));

相关内容

最新更新