MainWindow()和GetXmlData()可以正常工作,并在gridview上显示xmlfile。但是当我包含XmlNode:IDataErrorInfo类时,它将停止工作。

我喜欢让所有这些人都可以工作来显示和验证gridview。任何人都可以发现我想念的东西吗?或解释,我在这里停下来。似乎observablecollection之间的错误。

    public MainWindow()
    {
        InitializeComponent();
        RadGridView testGrid = new RadGridView();
        testGrid.ItemsSource = GetXmlData();
        testGrid.AutoGenerateColumns = false;
        GridViewDataColumn col1 = new GridViewDataColumn();
        col1.DataMemberBinding = new Binding("JobKey") {
        ValidatesOnDataErrors = true, NotifyOnValidationError = true };
        testGrid.Columns.Add(col1);
        LayoutRoot.Children.Add(testGrid);
   }

    private static object GetXmlData()
    {
        XmlDocument doc = new XmlDocument();
        doc.Load(@"c:\\JobSetupFile.xml");

        XmlDataProvider provider = new XmlDataProvider();
        provider.IsAsynchronous = false;
        provider.Document = doc;
        provider.XPath = "JobSetup/JobParameters";

        return new ObservableCollection<XmlNode>((IEnumerable<XmlNode>)provider.Data);
    }

    public class XmlNode : IDataErrorInfo
    {
        public string JobKey { get; set; }

        public XmlNode()
        {

        }

        public string Error
        {
            get { throw new NotImplementedException(); }
        }

        public string this[string columnName]
        {
            get
            {
                string result = string.Empty;
                if (columnName.Equals("JobKey"))
                {
                    if (JobKey.Where(s => Char.IsLetter(s)).Count() != JobKey.Length)
                        result = "Invalid name format. Name should contain letters only";
                }
             return result;
            }
        }
    }

最佳答案

您在Error中的IDataErrorInfo实现引发异常。 WPF绑定机制最有可能调用此方法来确定是否存在任何实例级错误,而您提供的this[string columnName]索引器正在返回属性级错误。

这个...

public string Error
{
   get { return string.Empty; }
}


...将是更好的选择!

我可能是错的...但是尝试对throw new NotImplementedException()语句进行断点操作,看看会发生什么!

关于c# - 具有XML文件的ObservableCollection和IDataErrorInfo,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5266398/

10-09 05:56