1. ホーム
  2. wpf

[解決済み] WPF バインディング StringFormat Short Date String

2022-12-19 10:09:14

質問

WPFでShort Dateという文字列形式を使いたいのですが。

のようなものを試してみました。

<TextBlock Text="{Binding Date, StringFormat='Short Date'}" />

どうすればいいのか?

どのように解決するのですか?

これを試してみてください。

<TextBlock Text="{Binding PropertyPath, StringFormat=d}" />

はカルチャセンシティブで、.NET 3.5 SP1 以上が必要です。

注:これは大文字と小文字を区別します。 "d"は 短い日付の書式指定子 であり、"D" は 長い日付の書式指定子 .

文字列フォーマットの完全なリストは MSDN の標準的な日付と時刻の書式の文字列のページ に、すべてのオプションの詳細な説明があります。 この MSDN ブログの記事

カルチャーを自分で正しい値に設定しない限り、常にUSフォーマットで出力されます。

このプロパティを設定しない場合、バインディングエンジンは 言語 プロパティを使用します。XAMLでは、これはデフォルトで "en-US" に設定されるか、または明示的に設定されている場合は、ページのルート要素 (または任意の要素) から値を引き継ぎます。

ソース

これを行う1つの方法は後ろのコードにあります(スレッドのカルチャを正しい値に設定したと仮定しています)。

this.Language = XmlLanguage.GetLanguage(Thread.CurrentThread.CurrentCulture.Name);

他の方法は、バインディングでコンバータカルチャを設定することです。

<TextBlock Text="{Binding PropertyPath, StringFormat=d, ConverterCulture=en-GB}" />

ただし、これでは出力をローカライズすることはできません。