正如您在WPF
应用程序中所知道的,如果要将特定类的某些属性绑定到控件的属性,则必须实现INotifyPropertyChanged
该类的接口。
现在考虑我们有许多没有实现的普通类INotifyPropertyChanged
。它们是非常简单的类,例如这个例子:
public class User : ModelBase
{
public int Id { get; set; }
public string UserName { get; set; }
public string Password { get; set; }
// ...
}
例如,我想将 绑定UserName
到 a TextBox
,所以我应该编写另一个像这样User
实现的新类INotifyPropertyChanged
:
public class User : INotifyPropertyChanged
{
public string Password { get {return _Password}}
set {_Password=value;OnPropertyChanged("Password");}
// ... Id and UserName properties are implemented like Password too.
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
// ...
}
现在我的问题是,是否存在或者您知道任何简化它的机制或技巧?
考虑到我们有 100 多个模型,也许它们会被改变。
我正在考虑一种方法,例如使用泛型类来执行此操作(已编辑):
public class BindableClass<NormalClass> { ...adding ability to bind instructions using reflection... }
NormalClass NormalInstance = new NormalClass();
// simple class, does not implemented INotifyPropertyChanged
// so it doesn't support binding.
BindableClass<NormalClass> BindableInstance = new BindableClass<NormalClass>();
// Implemented INotifyPropertyChanged
// so it supports binding.
当然,我不确定这是不是好方法!这只是澄清我的问题的一个想法。
请不要告诉我没有办法或不可能!有数百种型号!!!
谢谢。