当前位置:  开发笔记 > 编程语言 > 正文

在WPF DataGrid中输入时用逗号替换逗号

如何解决《在WPFDataGrid中输入时用逗号替换逗号》经验,为你挑选了1个好方法。

我有一个带有DataGrid的WPF应用程序,它绑定到ObservableCollection.集合类型是一个类,它包含一个或多个类型为double的属性,用于十进制值.在XAML中,我已经定义了DataGrid-Columns:


    

正如您所看到的,我正在使用UpdateSourceTrigger LostFocus而不是PropertyChanged.在PropertyChanged的情况下,输入会立即被检查,并且会出现像"."这样的字符.会导致不可信.通过使用LostFocus,我可以用点输入小数.

现在我想输入逗号并用点替换它.我可以在KeyDown-或PreviewKeyDown事件中进行替换以及如何进行替换?我不知道如何更换值,而KeyDown和TextBox的类似情况没有太大帮助.



1> Patrick Pirz..:

我找到了一个使用转换器类的真正简单的解决方案.

首先,我们需要一个转换器类,用点替换输入中的任何逗号.笑话是我们必须在Convert方法和ConvertBack方法中进行相同的替换.:d

using System;
using System.Globalization;
using System.Windows.Data;

namespace P16_StepFunctions
{
    /// 
    /// Class for replacing comma by dot in input of decimal fields.
    /// 
    public class DecimalConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            return value.ToString().Replace(",", ".");
        }

        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            return value.ToString().Replace(",", ".");
        }

    }
}

然后我们在窗口的XAML中添加一个资源到转换器类,如下所示:


    

最后,我们将一个Converter-attribute添加到所有datagrid列的绑定中,这些列应包含十进制值.此属性将转换器作为staticresource获取.


就这样.在键入其中一个datagrid单元格时,在光标离开单元格后,逗号将被点替换.如果输入错误如"1,1,1",则单元格会出现红色边框并出现错误符号"!" 自动显示在数据网格行的左侧.然后用户可以编辑他的错误.

推荐阅读
Chloemw
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有