【发布时间】:2021-11-09 12:14:55
【问题描述】:
我是 MVVM 模式的新手,因此是 MVVMCross 的新手。但我似乎无法弄清楚如何通知 ViewModel 模型属性的更改。也许我理解错误的模式并使用了错误的架构?
这是我的模型类:
public class WallModel: MvxNotifyPropertyChanged
{
private double _oc;
public double oc
{
get { return _oc; }
set
{
_oc = value;
RaisePropertyChanged(() => oc);
}
}
}
在我的 ViewModel 中,我有 WallModel 类的以下属性:
private WallModel _wallModel = new WallModel();
public WallModel wallModel
{
get { return _wallModel; }
set
{
SetProperty(ref _wallModel, value);
}
}
我可以很好地从模型中检索数据,所以问题不在于绑定。
当前发生的情况是模型中 oc 属性的 set 正在触发,但 ViewModels set 没有被触发。
我希望发生的是 RaisePropertyChanged(() => oc); 会导致 ViewModles set 触发,但它不会。
RaisePropertyChanged(() => oc); 会做什么呢?
我是否误解了 MVVM 模型,我应该更改我的架构吗?**
如何获得所需的行为?
我曾尝试手动实现INotifyPropertyChanged,但这并不能解决
【问题讨论】:
-
目前发生的情况是模型中的 oc 属性集正在触发,但 ViewModels 集没有被触发。 为什么会这样?您没有在
ViewModel中更改wallModel... 为什么需要这个?绑定应该可以正常工作......如果你需要这个,那么你应该注册INotifyPropertyChanged更改ViewModel..._wallModel.PropertyChanged += (o, e) => { /* do whatever you want ... */ } -
需要通知 ViewModel,因为更新后的模型需要传递给另一个模型进行处理。