[英]WPF Data Binding to changing object
我有一個用戶控件,顯示當前登錄的用戶名。 我已將控件中的TextBlock綁定到我的應用程序中的User obejct的UserId屬性。
我遇到的問題是每次新用戶登錄時,我的綁定用戶對象都會更改。
我可以想到一個解決方案,當用戶obejct發生變化時我會觸發一個事件,然后通過控制抓住我,然后重新初始化綁定,但這似乎不太理想。
有這個問題的解決方案,我覺得它一定很常見嗎?
干杯,
詹姆士
大多數UI綁定已通過屬性通知處理此問題,特別是(對於WPF) INotifyPropertyChanged
。 - 即如果要在單個實例上更新UserId:
class User : INotifyPropertyChanged {
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName) {
PropertyChangedEventHandler handler = PropertyChanged;
if(handler!=null) handler(this, new PropertyChangdEventArgs(
propertyName));
}
private string userId;
public string UserId {
get {return userId;}
set {
if(userId != value) {
userId = value;
OnPropertyChanged("UserId");
}
}
}
}
然后應該自動更新綁定。 相反,如果您正在更改實際的用戶實例,那么請考慮相同的技巧,但針對用戶的任何主機:
public User User {
get {return user;}
set {
if(user != value) {
user = value;
OnPropertyChanged("User");
}
}
}
如果你綁定某些東西的“User.UserId”,它應該可以工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.