Двойное связывание с TextBox - PullRequest
9 голосов
/ 13 января 2012

Я часто использовал TextBox для связывания с целыми числами без особых проблем.

Однако, если я пытаюсь привязать TextBox к Double, это не сработает.

Когда я набираю 5,85 (будучи десятичным разделителем моих культур), я передаю 585.0 двойному значению.

Как он конвертируется и какое решение я могу использовать, чтобы это исправить? Будет ли ValueConverter лучшим решением?

Ответы [ 2 ]

4 голосов
/ 14 января 2012

Вы можете попробовать добавить это в конструктор вашего приложения:

FrameworkElement.LanguageProperty.OverrideMetadata(typeof(FrameworkElement),
             new FrameworkPropertyMetadata(XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag)));

Однако обратите внимание, что это не будет работать, если вы настроите десятичный разделитель. ( WPF-связывание данных с двойным значением с пользовательским десятичным разделителем )

1 голос
/ 14 января 2012

В целях диагностики вы можете добавить эти две строки кода в начало вашей программы ...

    var cc = Thread.CurrentThread.CurrentCulture;
    var cuic = Thread.CurrentThread.CurrentUICulture;

И сравните результаты. Вполне вероятно, что культура «cuic» будет придерживаться «en-US», потому что поток пользовательского интерфейса обычно делается именно так. Вы можете изменить это, установив тег <UICulture> в файле проекта, или вы можете попробовать в качестве диагностики ...

Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture;

и оцените побочные эффекты. В противном случае вы можете реализовать IValueConverter ...

...