如何从 mvvmcross 中的视图更新 ViewModel

How to update ViewModel from View in mvvmcross

我想从 mvvmcross 中的视图更新 ViewModel,我可以更新它吗?我试过 Messenger 插件,但对我没用。

您可以使用视图的 ViewModel 属性 并将其转换为您的 ViewModel 类型。之后您可以访问您想要执行或更改的所有内容。

一个使用 Droid 和 Core 项目的非常简单的例子是:

主视图

using Android.App;
using Android.OS;
using Cirrious.MvvmCross.Droid.Views;
using Core.ViewModels;

namespace Droid.Views
{
    [Activity]
    public class MainView : MvxActivity
    {
        protected MainViewModel MainViewModel 
        {
            get { return ViewModel as MainViewModel; } 
        }

        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);
            SetContentView(Resource.Layout.main_view);

            MainViewModel.ChangePropertyToEmpty();
        }
    }
}

然后是我们的 ViewModel:

using Cirrious.MvvmCross.ViewModels;

namespace Core.ViewModels
{
    public class MainViewModel : MvxViewModel
    {
        #region TestProperty

        private string _testProperty;

        public string TestProperty
        { 
            get { return _testProperty; }
            set { SetProperty(ref _testProperty, value); }
        }

        #endregion

        public void ChangePropertyToEmpty()
        {
            TestProperty = string.Empty;
        }
    }
}

另一种方法是在视图中对其进行类型转换 class。

MainViewModel model= (MainViewModel)this.ViewModel;
model.ChangePropertyEmpty()