当CurrentCulture被更改时,我看到XAML文档中的一些无效行为.当我在Window中有这样的元素时:
<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>
Run Code Online (Sandbox Code Playgroud)
以及MessageBox.Show(NumberValue.ToString("c")); 表格开始时,我看到不同的结果.
如果我使用默认语言运行表单一切都很明显.但是,如果我在代码中更改文化或在启动时绑定到日期和数字值仍显示en-US格式.显示的MessageBox.Show()值适当地反映当前文化.
问题:WPF在绑定中不尊重CurrentCulture吗?如果是这样,究竟是什么决定了用于绑定的文化.在我的情况下,它显然是en-US,但无论我在我的项目中设置什么作为默认语言,它总是在en-US中绑定.
任何想法赞赏......