私の場合:
DateTime型のプロパティへのTextBlockバインディングがあります。ユーザーの地域設定にあるように表示したい。
<TextBlock Text="{Binding Date, StringFormat={}{0:d}}" />
言語プロパティをWPFXAMLバインディングとして設定しており、CurrentCultureDisplayは次のように 述べています。
this.Language = XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag);
しかし、このコード行では、システム領域設定で選択された有効な値が示すようにではなく、CurrentCultureのIetfLanguageTagが示すCultureInfoのデフォルト形式としてテキストを表示するだけです。
(たとえば、「de-DE」の場合、選択されたyyyy-MM-ddの代わりにdd.MM.yyyyが使用されます)
すべてのバインディングでConverterCultureを定義せずに、バインディングが正しい形式を使用する方法はありますか?
コード内
string.Format("{0:d}",Date);
適切なカルチャ設定を使用します。
編集:
希望どおりに機能しない別の方法(this.Language = ...のように):
xmlns:glob="clr-namespace:System.Globalization;assembly=mscorlib"
と
<Binding Source="{x:Static glob:CultureInfo.CurrentCulture}"
Path="IetfLanguageTag"
ConverterCulture="{x:Static glob:CultureInfo.InvariantCulture}" />