gpt4 book ai didi

c# - 在 WPF 绑定(bind)中使用 "real"CultureInfo.CurrentCulture,而不是 IetfLanguageTag 中的 CultureInfo

转载 作者:IT王子 更新时间:2023-10-29 04:02:29 27 4
gpt4 key购买 nike

以我为例:

我有一个 TextBlock 绑定(bind)到 DateTime 类型的属性。我希望它按照用户的区域设置显示。

<TextBlock Text="{Binding Date, StringFormat={}{0:d}}" />

我将语言属性设置为 WPF XAML Bindings and CurrentCulture Display说:

this.Language = XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag);

但是使用这行代码它只是将文本显示为 CultureInfo 的默认格式用 CurrentCulture 的 IetfLanguageTag 表示,而不是在系统区域设置中选择的有效值表示:

(例如,对于“de-DE”,使用 dd.MM.yyyy 而不是选择的 yyyy-MM-dd)

Region settings: not the default but yyy-MM-dd is used

有没有一种方法可以让 Binding 使用正确的格式而无需在每个 Binding 上都定义 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}" />

最佳答案

您可以创建绑定(bind)的子类(例如 CultureAwareBinding),它会在创建时自动将 ConverterCulture 设置为当前文化。

这不是一个完美的解决方案,但它可能是唯一的解决方案,因为追溯强制绑定(bind)尊重区域性可能会破坏 WPF 中依赖于此行为的其他代码。

如果您需要更多帮助,请告诉我!

关于c# - 在 WPF 绑定(bind)中使用 "real"CultureInfo.CurrentCulture,而不是 IetfLanguageTag 中的 CultureInfo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5831455/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com