簡體   English   中英

WPF數據綁定到更改對象

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM