Xceed WPF Propertygrid:对属性网格字段进行验证

时间:2013-06-24 12:34:03

标签: wpf validation propertygrid xceed

我正在使用Xceed的wpf属性网格控件来显示我的一些配置属性。我正在通过{ SelectedObject="{Binding Entity.Configuration} }进行操作,其中Configuration对象包含属性列表,此对象在运行时使用xml文件创建。

我需要对这些属性进行验证(例如最大/最小值)。但是我没有找到任何验证方法。如果有的话,有人可以告诉我吗?

1 个答案:

答案 0 :(得分:2)

将以下内容添加到您的课程中:

using System.ComponentModel.DataAnnotations;

public class YourClass : DataErrorInfoImpl
{
    [Range(0, 100 , ErrorMessage = "The number must be from [0,100].")]
    Double SomeNumberToValidate {get;set;}

}

public class DataErrorInfoImpl : IDataErrorInfo
{
    string IDataErrorInfo.Error { get { return string.Empty; } }

    string IDataErrorInfo.this[string columnName]
    {
        get
        {
            var pi = GetType().GetProperty(columnName);
            var value = pi.GetValue(this, null);

            var context = new ValidationContext(this, null, null) { MemberName = columnName };
            var validationResults = new List<ValidationResult>();
            if (!Validator.TryValidateProperty(value, context, validationResults))
            {
                var sb = new StringBuilder();
                foreach (var vr in validationResults)
                {
                    sb.AppendLine(vr.ErrorMessage);
                }
                return sb.ToString().Trim();
            }
            return null;
        }
    }
}

披露:我从propertytools属性网格中提取了一些此代码。它适用于Xceed和PropertyTools库。