就我而言:
我有一个TextBlock绑定到DateTime类型的属性.我希望它显示为用户的区域设置.
<TextBlock Text="{Binding Date, StringFormat={}{0:d}}" />
Run Code Online (Sandbox Code Playgroud)
我将语言属性设置为WPF XAML Bindings和CurrentCulture Display 说:
this.Language = XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag);
Run Code Online (Sandbox Code Playgroud)
但是使用这行代码,它只是将文本显示为CultureInfo的默认格式,并使用CurrentCulture的IetfLanguageTag表示,而不是在系统区域设置中选择的有效值表示:
(例如,对于"de-DE" dd.MM.yyyy用于代替选定的yyyy-MM-dd)

有没有一种方法Binding使用正确的格式而不在每个Binding上定义ConverterCulture?
在代码中
string.Format("{0:d}",Date);
Run Code Online (Sandbox Code Playgroud)
使用正确的文化设置.
编辑:
另一种不能按预期工作的方式(比如this.Language = ......):
xmlns:glob="clr-namespace:System.Globalization;assembly=mscorlib"
Run Code Online (Sandbox Code Playgroud)
和
<Binding Source="{x:Static glob:CultureInfo.CurrentCulture}"
Path="IetfLanguageTag"
ConverterCulture="{x:Static glob:CultureInfo.InvariantCulture}" />
Run Code Online (Sandbox Code Playgroud)