вторник, 8 февраля 2011 г.

Региональные настройки в WPF

Столкнулся с проблемой биндинга дробных чисел в WPF. Суть: есть TextBox, свойство Text которого через биндинг связано с полем типа float/double. При неаборе числа вида "23,4" (через запятую), запятая исчезает и в число записывается 234. Если писать через точку, то все нормально. В региональных настройках стоит в качестве разделителя запятая.
Решается принудительным переопределением LanguageProperty для всех элментов управления.

FrameworkElement.LanguageProperty.OverrideMetadata( 
    typeof(FrameworkElement), 
    new FrameworkPropertyMetadata(
        XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag)
)
); 
 Но странно, почему это не сделано по умолчанию.

2 комментария:

  1. Спустя 6 лет, этот кейс всё так же взрывает головы и бездарно тратит время...Спасибо за ваши уроки и блог!

    ОтветитьУдалить
    Ответы
    1. Пожалуйста, для того, собственно и делал :)

      Удалить