我想从mvvmcross中的视图更新ViewModel,我可以更新吗?我试过了信使,但它对我没用。
答案 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()