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)));