如何在mvvmcross中从View更新ViewModel

Rav*_*ani 1 mvvmcross xamarin

我想从mvvmcross中的视图更新ViewModel,我可以更新吗?我曾尝试使用信使,但它对我没用.

Nik*_*ola 5

你可以做的是你可以使用View的ViewModel属性并将其转换为你的ViewModel类型.之后,您可以访问要执行或更改的所有内容.

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

的MainView

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();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

然后我们的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;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)