小编Mar*_*s k的帖子

在WPF Binding中使用"真正的"CultureInfo.CurrentCulture,而不是来自IetfLanguageTag的CultureInfo

就我而言:

我有一个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)

区域设置:不是默认设置,而是使用yyy-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)

c# wpf binding currentculture

37
推荐指数
3
解决办法
4万
查看次数

标签 统计

binding ×1

c# ×1

currentculture ×1

wpf ×1