在一个应用程序中,我试图使用24小时日期格式,但遇到一个问题,我在xaml中的绑定仍然恢复显示12小时格式
在显示UI之前,我使用HH:mm和HH:mm:ss更新CultureInfo
对象作为短时和长时格式。
然后,在UI中,我绑定到绑定中带有FormatString的DateTime
对象
<TextBlock Text="{Binding TimeTest, StringFormat=t}" />
我的期望是我会看到17:33,但最终会看到下午5:33。我们发现的一种解决方法是传递当前的文化,但是希望避免在可能使用时间的每个绑定上执行此操作。
<TextBlock Text="{Binding Date, StringFormat=t, ConverterCulture={x:Static gl:CultureInfo.CurrentCulture}}" />
答案 0 :(得分:0)
答案 1 :(得分:0)
正如您所发现的,问题在于WPF以与.NET其他部分不同的方式进行文化信息和本地化。
有一个很好的discussion of the problem here on SO。
WPFGlue blog有一些进一步的细节
答案 2 :(得分:0)
您可以从Binding派生一个预设ConverterCulture的类,并使用它来代替原始绑定,例如
Public Class Binding
Inherits System.Windows.Data.Binding
Public Sub New()
MyBase.New()
ConverterCulture = System.Globalization.CultureInfo.CurrentCulture
End Sub
Public Sub New(ByVal path As String)
MyBase.New(path)
ConverterCulture = System.Globalization.CultureInfo.CurrentCulture
End Sub
End Class
和
<TextBlock Text="{my:Binding TimeTest, StringFormat=t}" />
您也可以尝试自定义StringFormat,例如StringFormat ='HH:mm'