Привязка данных WPF к изменяющемуся объекту

onPostExecute(jsonObject: JsonObject) вызывается в главном потоке, похоже, вы там много работаете (для циклов и сохранения БД). Попробуйте сделать это в фоновом режиме, а затем верните только то, что нужно сделать в основном потоке.

Кроме этого, эти ошибки (которые на самом деле являются предупреждениями) можно игнорировать, особенно если они работают на старом телефоне или эмуляторе. Если это на самом деле не вызывает видимых задержек, у вас должно быть все в порядке, если время задержки не является значительным и постоянно происходит.

6
задан RichieHindle 8 May 2009 в 10:16
поделиться

1 ответ

Большинство привязок пользовательского интерфейса уже обрабатывают это с помощью уведомлений о свойствах, в частности (для 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», то это должно сработать.

8
ответ дан 16 December 2019 в 21:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: