我有一個對象綁定到使用C#WinForms(定位.NET 4.5.2)的窗體上的控件。我已經實現了INotifyPropertyChanged
,並且當我修改此對象的Property時,它按照預期更新了Form的控件。但是,當我將此對象的實例更改爲新實例時,即使嘗試修改特定的屬性,它也不會再更新控件。當我將一個新對象實例指定給綁定變量時,數據綁定不起作用
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");
時,無論我做什麼,它都不會再更新。
我的理解是,對象的特定實例是控件綁定的內容。我的主要目標是不必手動遍歷更大對象的每個屬性,並在每次更改實例時手動更改所有內容。
我的問題:有沒有一種方法來更改對象的實例,而無需去除綁定到控件?
lblName.DataBindings.Add("Text", currentUser, "Name");
相反,你需要一些中介:
這工作完美。謝謝! – pfthroaway