Запятая как десятичный разделитель в DataGrid - PullRequest
0 голосов
/ 10 октября 2018

У меня есть собственная DataGrid, которая создает столбец для каждого дня месяца и привязывает его содержимое к заданному списку.Значения списка являются двойными.

Теперь я хочу изменить ввод, чтобы пользователь мог написать 3,12 вместо 3,12.Я попытался изменить cultureinfo, который не имел никакого эффекта, а также попытался установить StringFormat для привязки, но это не сработало.Решением было бы написать конвертер, но я думаю, что могут быть более эффективные методы для достижения этой цели, тем более что я не хочу использовать специальный конвертер для более общей таблицы данных.

Так что мой вопрос, как бы выдостичь этого;что является лучшим способом.

РЕДАКТИРОВАТЬ: я нашел решение сразу после публикации моего вопроса ..

Wpf всегда использует культуру "en-US", вы можете изменить это поведение в целомзапрограммируйте, добавив

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

или просто измените его для конкретной привязки, подобной этой

            Binding contentBinding = new Binding(PATH);
            contentBinding.ConverterCulture = CultureInfo.CurrentCulture;
            textColumn.Binding = contentBinding;

Обратите внимание, что вы должны сделать дополнительный шаг над привязкой, так как textColumn.Binding не имеет типаBinding, но BindingBase, который больше не предлагает свойство ConverterCulture.

Ответы StringFormat Проблемы с локализацией в wpf .

1 Ответ

0 голосов
/ 10 октября 2018

Этим вы можете настроить глобально для своего приложения использование вашей культуры Windows.Поэтому, если у вас есть окна на английском языке, вы будете использовать точку, а на окнах на немецком - запятую.

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

Имейте в виду, что это решение задает его глобально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...