Региональные настройки AutoCAD Civil 3D версии 2019

Автор Тема: Региональные настройки AutoCAD Civil 3D версии 2019  (Прочитано 9429 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Дмитрий ЗагорулькинАвтор темы

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
При неправильном вводе связанное с TextBox значение сбрасывается на 0.0 не изменяется. Хорошо если пользователь внимательный и увидит, что появилась красная рамка у TextBox, задумается в чём проблема и догадается, что надо ввести другой разделитель. Но я, например, совершенно не ожидал, что нужно будет вводить запятую и не обратил внимания на "подсветку". И заметил, что что-то не так уже сильно позже того, как менял настройки...
P.S. Да и несолидно это как-то для серьёзного приложения - заставлять пользователя гадать какой надо разделитель в зависимости от версии Civil 3D. Причём, там где у меня есть конвертеры собственные - там воспринимается точка, а где конвертер по умолчанию - запятая. Получается, что даже в рамках одной версии нет единообразия.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Дмитрий Загорулькин,
В AutoCAD 2019 Russian:


Т.е. то как у вас происходит - это похоже проблема Civil 3D 2019. ;-)
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Дмитрий ЗагорулькинАвтор темы

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
Эх... Спасибо за проверку!

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Эх... Спасибо за проверку!
А в диалогах самого Civil 3D 2019 в качестве разделителя запятая или точка?
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Вильдар

  • ADN Club
  • ****
  • Сообщений: 405
  • Карма: 77
  • Skype: vildar82
Точки похоже:


Оффлайн Дмитрий ЗагорулькинАвтор темы

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
Если учесть, что этим диалогам лет по 10 минимум, я сильно сомневаюсь, что они WPF.

Отмечено как Решение Александр Ривилис 11-03-2019, 17:52:11

Оффлайн Дмитрий ЗагорулькинАвтор темы

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
В общем, как показали опыты, действительно, в версиях 2017 и 2019 различаются региональные параметры, используемые в WPF диалогах. В 2017 используется "en-US", в 2019 - "ru-RU". Исходя из этого, есть, как минимум, два варианта решения проблемы. Оба они позволяют обойти это поведение, даже если его снова изменят в следующей версии.
Первый - в каждом бинде числового значения задавать параметр ConverterCulture (даже если не используется собственный конвертер):
Код - XML [Выбрать]
  1. Text="{Binding DoubleValue, Mode=TwoWay, ConverterCulture=en-US}
Второй - использовать собственный конвертер. Как развитие этой идеи - использовать собственный контрол с блэкджеком и прочими дополнениями. Например, можно сделать так, чтобы ввод поддерживал одновременно и запятую и точку. Пример такого контрола и его использования - в прилагаемом проекте.

Оффлайн Дмитрий ЗагорулькинАвтор темы

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
Довольно интересная статья на тему: https://www.codeproject.com/Tips/1004834/Binding-with-Respect-to-CurrentCulture
Там есть ещё пара вариантов решения.

Оффлайн Дмитрий ЗагорулькинАвтор темы

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
В версии 2020 - аналогично с 2019. Причём, не имеет разницы - английский Civil 3D или русский. Провёл несколько опытов и выяснил, что поведение зависит от настройки "Язык интерфейса Windows". В принципе, для WPF в целом - это выглядит довольно логично. Но с учётом того, что Civil запускается с флагом /Language "en-US" и весь свой интерфейс переводит на английский, а для внутренних диалогов всё равно используются русская культура - то скорее всего, это баг.