簡體   English   中英

Xceed WPF Propertygrid:在屬性網格字段上進行驗證

[英]Xceed WPF Propertygrid: Validation on Property grid fields

我正在使用Xceed的wpf屬性網格控件來顯示一些配置屬性。 我正在通過{ SelectedObject="{Binding Entity.Configuration} } ,其中Configuration對象包含屬性列表,並且此對象是在運行時使用xml文件創建的。

我需要對這些屬性(例如最大/最小值)進行驗證。 但是我沒有找到進行驗證的任何方法。 有人可以讓我知道嗎?

將以下內容添加到您的課程中:

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庫一起使用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM