MVVM如何在嵌套对象属性更新时得到通知?

时间:2018-10-17 08:48:25

标签: c# .net wpf mvvm inotifypropertychanged

例如

class child : ObservableObject{
  private int _prop;
  public int prop{
    get {
      return _prop;
    }
    set {
      _prop=value;
      OnPropertyChanged("prop");
    }
}
class parent : ObservableObject{
  private child _mychild;
  public child mychild{
    get {
      return _mychild;
    }
    set {
      _mychild=value;
      OnPropertyChanged("mychild");
      OnPropertyChanged("pow");
    }
  }
  public int pow{
    return _mychild.prop*2;
  }
}

parent myobj;
myobj.child.prop=1;

如何通知bar.z已更新?我已经绑定了嵌套属性并更新了视图,但是绑定了bar.pow的部分没有得到更新。

<Textbox Text={Binding myobj.child.prop}/>
<Textbox Text={Binding myobj.pow}/>

即时通讯试图在更新第一个文本框时更新第二个文本框。

1 个答案:

答案 0 :(得分:-1)

您必须在父对象中预订子对象的active_sessions = Session.objects.filter(expire_date__gte=timezone.now()) user_list = User.objects.filter( id__in=[session.get_decoded().get('_auth_user_id', None) for session in active_sessions] ).values_list('username', flat=True) tot_active_sessions = active_sessions.count() if tot_active_sessions > _sessions_limit: logout(request) return render(request, 'page/users.html', context={'user_name_list': user_list }),并在事件处理程序中通知active_sessions = Session.objects.filter(expire_date__gte=timezone.now()) uids=[session.get_decoded().get('_auth_user_id', None) for session in active_sessions] tot_active_sessions = active_sessions.count() if tot_active_sessions > _sessions_limit: user_dict = dict( User.objects.filter( id__in=uids ).values_list('id', 'username')) user_list = [user_dict.get(_id) for _id in uids] logout(request) return render(request, 'page/users.html', context={'user_name_list': user_list })的哪些属性受到了影响。不要忘记取消订阅先前的对象。

PropertyChanged