В WPF 3.5SP1 я использую последнюю функцию StringFormat в DataBindings:
<TextBlock Text="{Binding Path=Model.SelectedNoteBook.OriginalDate, StringFormat='f'}"
FontSize="20" TextTrimming="CharacterEllipsis" />
Проблема, с которой я сталкиваюсь, заключается в том, что дата всегда форматируется на английском языке ... хотя моя система на французском языке? Как я могу заставить дату следовать системной дате?
wpf
datetime
localization
Павел Аниховский
источник
источник
Ответы:
Из создания интернационализированного мастера в WPF
источник
Определите следующее пространство имен xml:
А теперь взгляните на это фантастическое исправление:
Я хорошо понимаю, что это не глобальное исправление, и оно потребуется вам в каждой из ваших привязок, но, конечно же, это просто хороший XAML? Насколько мне известно, в следующий раз, когда привязка обновится, она будет использовать правильную
CultureInfo.CurrentCulture
или все, что вы предоставили.Это решение немедленно обновит ваши привязки с правильными значениями, но кажется, что много кода для чего-то настолько редкого и безобидного.
источник
Я просто хотел добавить, что ответ loraderon отлично работает в большинстве случаев. Когда я помещаю следующую строку кода в свой App.xaml.cs, даты в моих текстовых блоках форматируются с использованием правильного языка и региональных параметров.
Я говорю "в большинстве случаев". Например, это будет работать из коробки:
... но при использовании Run в TextBlock DateTime форматируется в культуре по умолчанию.
Чтобы это сработало, мне нужен был ответ Гусдора , а именно добавление ConverterCulture = {x: Static gl: CultureInfo.CurrentCulture} в привязку.
Надеюсь, этот дополнительный ответ будет кому-то полезен.
источник
Просто вставьте ярлык культуры в тег верхнего уровня:
например:
источник
DatePicker
выполнять свою работу, поэтому это простое исправление получилось меня быстро вернули в нужное русло!Как уже говорилось, по умолчанию XAML использует инвариантный язык и региональные параметры (en-US), и вы можете использовать
, чтобы установить культуру по умолчанию для языка текущей культуры. Но комментарий неверный; это не используется текущая культура, так как вы не увидите никаких настроек, которые мог сделать пользователь, он всегда будет использоваться по умолчанию для языка.
Чтобы действительно использовать текущую культуру с настройками, вам нужно будет установить
ConverterCulture
вместе сStringFormat
, как вс
gl
определенным как глобальное пространство имен в вашем корневом элементеисточник
binding.ConverterCulture = System.Globalization.CultureInfo.CurrentCulture;
Если вам нужно изменить язык во время работы программы, вы можете просто изменить свойство Language в вашем корневом элементе (я не уверен, имеет ли это мгновенный эффект или если субэлемент необходимо воссоздать, в моем случае это работает по крайней мере)
источник
Полный код для переключения локализации также в таких элементах, как
<Run />
это:источник
Если вы хотите изменить информацию о культуре во время выполнения, вы можете использовать поведение (см. Ниже)
источник
Если вы работаете с кодом, а не с XAML, вы можете установить ConverterCulture следующим образом:
Престижность @KZeise за указание на тонкую разницу между использованием определения культуры по умолчанию и использованием пользовательского определения культуры.
источник
Используйте Label (включая Cultture), а не texblock
источник