方法未在 ViewModel - MVVMCross 中调用
本文关键字:MVVMCross 调用 ViewModel 方法 | 更新日期: 2023-09-27 17:56:07
我有两个视图:MainView
和ProfileView
。
用户在ProfileView
中设置Age
属性,然后单击上一个箭头按钮(PreviousDialog 绑定),以便MainView
通过Messaging
协议更新Age
属性。
当用户单击上一个箭头按钮时,ProfileViewModel
中的以下实现不会调用NotifyUpdate
方法。我想知道我错过了什么或做错了什么?
配置文件视图模型.cs
public ICommand PreviousDialog
{
get
{
NotifyUpdate();
return new MvxCommand(() => ShowViewModel<MainViewModel>());
}
}
// the following method does not get called
private void NotifyUpdate()
{
var message = new CustomMessage(this, Age);
var messenger = Mvx.Resolve<IMvxMessenger>();
messenger.Publish(message);
}
当你按下 previous arrow button
时,不会调用 ICommand
属性的getter
。相反,发生的情况是调用ICommand
的 Execute 方法,该方法调用您提供给MvxCommand
的delegate
...ShowViewModel<MainViewModel>()
.
如果您希望在单击previous arrow button
时调用NotifyUpdate
,则应将NotifyUpdate
调用与ShowViewModel<MainViewModel>()
一起放入单独的方法中,并将该方法传递到MvxCommand
中....像这样:
public ICommand PreviousDialog
{
get
{
return new MvxCommand(() => NotifyAndNavigate());
}
}
private void NotifyAndNavigate()
{
NotifyUpdate();
ShowViewModel<MainViewModel>();
}