4

我有一个 WPF DataGrid 并使用 DataGridTextColumn 绑定到一个集合。Collection 中的项目有一些浮动属性。

当我的程序启动时,我修改了 DataGrid 中 float 属性的值,如果我输入一个整数值,它就可以正常工作。但是如果我输入 char 。对于浮点值, char 。无法输入。我必须先输入所有数字,然后跳到 . 键入 char 的位置。完成我的输入。

那我怎么打字。在我的情况下?

谢谢。

4

4 回答 4

3

也遇到了同样的问题。

就我而言,这是由于数据绑定选项。

我从 更改*.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;*.UpdateSourceTrigger = UpdateSourceTrigger.LostFocus;

然后它可以float直接输入数字。

于 2016-09-13T13:37:05.293 回答
0

在绑定中尝试这个正则表达式验证。

<Validator:RegexValidationRule x:Key="DecimalValidatorFor3Digits"
    RegularExpression="^\d{0,3}(\.\d{0,2})?$"
    ErrorMessage="The field must contain only numbers with max 3 integers and 2 decimals" />

谢谢

CK 尼丁 (TinTin)

于 2012-12-19T11:01:11.847 回答
0

我想这是因为您的 datagridcolumn 绑定到具有十进制数据类型的类成员,例如

public class Product : ModelBase
{
    decimal _price = 0;
    public decimal Price
    {
        get { return _price; }
        set { _price = value; OnPropertyChanged("Price"); }
    }
}

和 UpdateSourceTrigger=PropertyChanged。摆脱它的一种方法是将属性更改为字符串类型,并如下操作字符串:

string _price = "0.00";
    public string Price
    {
        get { return _price; }
        set 
        {
            string s = value;
            decimal d = 0;
            if (decimal.TryParse(value, out d))
                _price = s;
            else
                _price = s.Substring(0, s.Length == 0 ? 0 : s.Length - 1);
            OnPropertyChanged("Price"); 
        }
    }

希望能帮助到你

于 2015-01-22T15:17:03.830 回答
0

It could be an issue with Localization. Try changing the Culture settings of your thread to check out if this could be the problem:

using System.Globalization;
using System.Threading;

Thread.CurrentThread.CurrentUICulture = new CultureInfo("en");

you can double-check the settings if you are unsure in which Culture you are running by going to Control Panel > Clock, Language and Region or running the following code:

using System.Diagnostics;

Debug.WriteLine("decimal: " + Thread.CurrentThread.CurrentUICulture.NumberFormat.NumberDecimalSeparator);
Debug.WriteLine("thousand: " + Thread.CurrentThread.CurrentUICulture.NumberFormat.NumberGroupSeparator);
于 2012-12-19T10:17:16.390 回答