【发布时间】:2017-02-10 13:13:59
【问题描述】:
我有一个对象,我已使用 C# WinForms(针对 .NET 4.5.2)绑定到表单上的控件。我已经实现了INotifyPropertyChanged,当我修改这个对象的一个属性时,它会按预期更新表单的控件。但是,当我将此对象的实例更改为新实例时,它将不再更新控件,即使我尝试修改特定的属性也是如此。
class User : INotifyPropertyChanged
{
string _name = "";
public string Name
{
get { return _name; }
set { _name = value; OnPropertyChanged("Name"); }
}
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(string property)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(property));
}
public User() { }
public User(string name)
{
Name = name;
}
public User(User otherUser)
{
Name = otherUser.Name;
}
}
在我的表格上
User currentUser = new User("Example Name");
lblName.DataBindings.Add("Text", currentUser, "Name");
正确更新。我可以使用currentUser.Name = "Blahblah"; 更改名称,它工作正常。当我尝试拨打currentUser = new User("New Name"); 时,无论我做什么都不会再更新。
据我了解,对象的特定实例是控件所绑定的对象。我的主要目标是不必手动检查较大对象的每个属性,并在每次我想更改实例时手动更改所有内容。
我的问题:有没有办法在不删除控件绑定的情况下更改对象的实例?
【问题讨论】:
标签: c# .net winforms data-binding