Страницы

вторник, 21 мая 2013 г.

WPF Bingings и CultureInfo

Binding в WPF очень хорошо, но разработчики Microsoft как всегда забыли о существовании стран, за пределами USA, и формат используемый по умолчанию не всегда подходит.
Попробуем исправить данную ситуацию несколькими способами.
Вот тот результат, к которому мы стремимся:



Первоначальное XAML описание окна:
Несколько вариантов не рассматриваем, как неперспективные:
  • Создание IValueConverter - IValueConverter может пригодится для чего-то другого.
  • Использование Custom Format Strings

Теперь то, что имеет право на жизнь:
Вариант 1 - Прямое указание культуры в Binding выражении
Вариант 2 - Изменение CurrentUICulture и использование ее в XAML
Изменяем класс App, указывая необходимую нам CultureInfo
В XAML на уровне окна добавляем ссылку на системную библиотеку Во всех binding выражениях прописываем культуру:

Вариант 3 - Изменение LanguageProperty на уровне окна В данном случае Language устанавливается до инициализацией компонент окна (imho так правильнее), но как показал тест, что если установить после, то все равно работает.

Вариант 4 - Установка Language на уровне приложения Данный метод, самый приятный и наименее затратный, т.к. Language наследуется всеми элементами визуального дерева, то больше ничего делать не надо. Естественно, все можно переопределять у детей.
И как результат:

Комментариев нет :

Отправить комментарий