我有一个扩展的绑定列表用于我的目的:
public class MyList<T> : BindingList<T>, INotifyPropertyChanged
{
private List<T> invalidObjectsList;
public MyList() : base()
{
invalidObjectsList = new List<T>();
}
...
public bool IsValid
{
get
{
return invalidObjectsList.Count == 0;
}
}
...
// I have similar method for deletion
AddElementToInvalidList(T element)
{
invalidObjectsList.Add(element);
OnPropertyChanged("IsValid");
}
...
// Stuff for the INotifyPropertyChanged interface
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(string name)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(name));
}
}
...
}
我正在设计UI以便能够使用该列表来修改和保存数据,让我们说数据库。所以在UI中我有一个DevXpress按钮来“保存数据”。实际列表分配为动态,表示:
dynamic list = DataProvider.GetObjectsList();
对于那个“保存数据”按钮,我试图将它的“Enabled”属性绑定到我的列表的“IsValid”属性,如下所示:
saveButton.DataBindings.Add("Enabled", list, "IsValid");
在运行时,我得到了未处理的异常:
Cannot bind to the property or column IsValid on the DataSource.
Parameter name: dataMember
我无法弄清楚这里有什么问题。请帮忙。
提前致谢!