Я вижу некорректное поведение из документов XAML при изменении CurrentCulture. Когда у меня есть некоторые элементы, как это в окне:WPF XAML Bindings and CurrentCulture Display
<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 («с»)); когда начинается форма, я вижу разные результаты.
Если я запустил форму с языком по умолчанию, все это, очевидно, очевидно. Однако, если я изменяю культуру в коде или при запуске, привязки к дате и номерам по-прежнему показывают форматирование в США. Отображаемое значение MessageBox.Show() соответствующим образом отражает текущую культуру.
Вопрос: Действительно ли WPF не уважает CurrentCulture в привязках? И если да, то что именно определяет культуру, которая используется для привязок. В моем случае это явно en-US, но независимо от того, что я задал в своем проекте как язык по умолчанию, он всегда связывается в en-US.
Любые идеи оценили ...
Только то, что мне нужно для моего приложения Windows Phone 7 - с незначительным изменением: - this.Language = XmlLanguage.GetLanguage (CultureInfo.CurrentCulture.Name); –
Вы можете сделать это в App.cs для всех привязок, как описано здесь: http://stackoverflow.com/questions/2764615/wpf-stringformat-0c-showing-as-dollars – Heiner
'IetfLanguageTag' устарел. Вместо этого можно использовать '.Name'. – Mafii