1

在一个应用程序中,我尝试使用 24 小时日期格式,但遇到了一个问题,我在 xaml 中的绑定仍然恢复为显示 12 小时格式

在显示 UI 之前,我将CultureInfo对象更新为 HH:mm 和 HH:mm:ss 作为 Short 和 Long Time 格式。

然后,在 UI 中,我使用绑定中DateTime的 FormatString 绑定到一个对象

 <TextBlock Text="{Binding TimeTest, StringFormat=t}" />

我的期望是我会看到 17:33,但最终会看到下午 5:33。我们发现的一种解决方法是传入当前的文化,但希望避免在每个可能使用时间的绑定上都这样做。

<TextBlock Text="{Binding Date, StringFormat=t, ConverterCulture={x:Static gl:CultureInfo.CurrentCulture}}" />
4

3 回答 3

0

根据该物业的文件ConverterCulture

在 XAML 中,此 [...] 从页面的根元素(或任何元素)继承值。

这并不完美,但这肯定比必须在每个元素上设置它更好,假设它有效。

于 2013-05-07T15:23:01.983 回答
0

您可以从预设 ConverterCulture 的 Binding 派生一个类,并使用它而不是原始绑定,例如

    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'

于 2013-05-07T18:01:29.427 回答
0

正如您所发现的,问题在于 WPF 处理文化信息和本地化的方式与 .NET 的其他部分不同。

在 SO 上有一个关于这个问题的很好的讨论

WPFGlue博客有一些进一步的细节

于 2013-05-07T18:00:10.437 回答