如何在mvvmcross中从View更新ViewModel

时间:2015-05-18 15:15:41

标签: xamarin mvvmcross

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

2 个答案:

答案 0 :(得分: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();
        }
    }
}

然后我们的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;
        }
    }
}

答案 1 :(得分:1)

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

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