1

アプリケーションで 24 時間形式の日付を使用しようとしていますが、xaml のバインドが 12 時間形式に戻ってしまうという問題が発生します。

UI が表示される前に、CultureInfoHH: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 を事前設定する 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='HH:mm' のようなカスタム StringFormat を試すこともできます。

于 2013-05-07T18:01:29.427 に答える