MVVMCross中消息协议中的保存按钮
本文关键字:保存 按钮 协议 消息 MVVMCross | 更新日期: 2024-10-20 05:22:21
我一直在尝试使用mvvmcross中的消息协议将参数从DetailViewModel
更新到MainViewModel
。如果您想动态更新属性,下面的代码会起作用;然而,我很困惑,因为我有save
按钮,它允许用户在返回MainViewModel
之前确认他在DetailViewModel
中的更改。
我应该如何处理这种情况?有办法处理吗?
MainViewModel
private readonly IMvxMessenger _messenger;
private readonly MvxSubscriptionToken _token;
public MainViewModel(IMvxMessenger messenger) {
_messenger = messenger;
_token = messenger.Subscribe<SelectedItemMessage>(OnMessageReceived);;
}
private void OnMessageReceived(SelectedItemMessage obj)
{
Age = obj.Age;
Category= obj.Category;
}
DetailViewModel
private readonly IMvxMessenger _messenger;
public DetailViewModel(IMvxMessenger messenger) {
_messenger = messenger;
}
public void UpdateMethod() {
var message = new SelectedItemMessage(this, SelectedItem);
_messenger.Publish(message, typeof(SelectedItemMessage));
}
SelectedItemMessage
public SelectedItemMessage(object sender, double age, int category) : base(sender)
{
Age = age;
Category = category;
}
public double Age { get; set; }
public int Category{ get; set; }
}
如果您的数据只应在用户执行Save
操作时更新,请在用户按下UpdateMethod
时调用它。
public void Save() {
UpdateMethod();
}
您可以使用ACR Mvvm跨用户对话框库来显示确认对话框,并仅在用户确认操作时调用UpdateMethod
:
var result = await UserDialogs.Instance.ConfirmAsync("Pick a choice", "Pick Title");
if (result)
{
UpdateMethod();
}
在使用