【发布时间】:2021-11-30 21:28:13
【问题描述】:
当 CurrentCulture 更改时,我在 XAML 文档中看到一些无效行为。当我在窗口中有这样的元素时:
<Window x:Class="WpfLocalizationLocBaml.Test"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:glob="clr-namespace:System.Globalization;assembly=mscorlib"
x:Name="wndTest"
Title="Test" Height="300" Width="300">
<StackPanel>
<TextBlock x:Name="lblCultureName"
Text="{Binding Source={x:Static glob:CultureInfo.CurrentCulture},
Path=DisplayName}" />
<TextBlock x:Name="lblLocaleDateValue"
Text="{Binding ElementName=wndTest, Path=TestDate}"/>
<TextBlock x:Name="lblLocaleNumberValue"
Text="{Binding ElementName=wndTest,Path=NumberValue,StringFormat=c}" />
</StackPanel>
</Window>
以及 MessageBox.Show( NumberValue.ToString("c") );当表单开始时,我看到了不同的结果。
如果我使用默认语言运行表单,显然一切都很好。但是,如果我更改代码中的区域性或在启动时绑定到日期和数字值仍然显示 en-US 格式。显示的 MessageBox.Show() 值恰当地反映了当前的文化。
问题:WPF 在绑定中不尊重 CurrentCulture 吗?如果是这样,究竟是什么决定了用于绑定的文化。就我而言,它显然是 en-US,但无论我在项目中将什么设置为默认语言,它总是绑定在 en-US 中。
任何想法表示赞赏...
【问题讨论】:
标签: wpf localization