Xceed WPF Propertygrid: проверка полей сетки свойств

Я использую элемент управления сеткой свойств Xceed wpf, чтобы показать некоторые из моих свойств конфигурации. Я делаю через { SelectedObject="{Binding Entity.Configuration} }, где объект Configuration содержит список свойств, и этот объект создается во время выполнения с использованием файла xml.

Мне нужно выполнить проверку этих свойств (например, максимальные/минимальные значения). Однако я не нашел способа сделать проверку. Может ли кто-нибудь сообщить мне, есть ли они?


person Karan Singh    schedule 24.06.2013    source источник


Ответы (1)


Добавьте в свой класс следующее:

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.

person Greg    schedule 17.07.2014