Я вижу недопустимое поведение в документах XAML при изменении CurrentCulture. Когда у меня есть несколько таких элементов в окне:
<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")); когда форма начинается, я вижу разные результаты.
Если я запускаю форму с языком по умолчанию, все хорошо, очевидно. Однако, если я изменю язык в коде или при запуске, привязки к значениям даты и числа по-прежнему будут отображаться в американском формате. Значение MessageBox.Show (), отображаемое соответствующим образом, отражает текущую культуру.
Вопрос: WPF не уважает CurrentCulture в привязках? И если так, что именно определяет культуру, которая используется для привязок. В моем случае это явно en-US, но независимо от того, что я установил в своем проекте в качестве языка по умолчанию, он всегда связывается в en-US.
Любые идеи приветствуются ...