gpt4 book ai didi

c# - 带有 XML 文件的 ObservableCollection 和 IDataErrorInfo

转载 作者:太空宇宙 更新时间:2023-11-03 16:47:51 25 4
gpt4 key购买 nike

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;
}
}
}

最佳答案

IDataErrorInfo 中的Error 的实现抛出异常。 WPF 绑定(bind)机制很可能会调用它来确定是否存在任何实例级错误,而您提供的 this[string columnName] 索引器正在返回属性级错误。

这...

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

... 会是更好的选择!

我可能是错的...但是尝试在 throw new NotImplementedException() 语句中设置断点,看看会发生什么!

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com