我有一个绑定到winform的对象,这个对象实现了idataerrorinfo。我有一个错误提供者。问题是当属性的属性发生更改时。
更改年龄时没有问题(即规则已正确检查和显示/删除)。但是,当我更改作业标题时,错误不会显示/删除(实际上,属性标题不属于对象人员)。我怎样才能兑现这张支票?
this.errorProvider1.DataSource = this.bindingSourcePerson; bindingSourcePerson.DataSource = new Person(); textBoxAge.DataBindings.Add("Text", bindingSourcePerson, "Age"); textBoxJobTitle.DataBindings.Add("Text", bindingSourcePerson, "CurrentJob.Title"); public class Person : IDataErrorInfo { public double Age { get; set; } private Job _job = new Job(); public Job CurrentJob { get { return _job; } set { _job = value; } } public string this[string columnName] { get { _lastError = ""; switch (columnName) { case "Age": case "CurrentJob.Title": if (!string.IsNullOrEmpty(CurrentJob.Title) && Age < 16) _lastError = "Invalid job."; break; default: _lastError = ""; break; } return _lastError; } } private string _lastError = ""; public string Error { get { return _lastError; } } public class Job { public string Title { get; set; } }
如果将属性添加到 Person 班级:
Person
public String CurrentJobTitle { get { return _job.Title; } }
然后捆绑 TextBoxJobTitle 到 CurrentJobTitle :
TextBoxJobTitle
CurrentJobTitle
textBoxJobTitle.DataBindings.Add("Text", bindingSourcePerson, "CurrentJobTitle");
或者,绑定 文本框作业标题 到 bindingSourcePerson.CurrentJob 这样地:
文本框作业标题
bindingSourcePerson.CurrentJob
textBoxJobTitle.DataBindings.Add("Text", bindingSourcePerson.CurrentJob, "Title");
能用吗?