我是使用MvvmCross的新手,我有一个问题。我想实现在Activity中以原生方式拍照,但我不知道如何将数据传递给ViewModel。
有办法做到这一点吗?
答案 0 :(得分:2)
将数据传递给ViewModel非常简单。如果您在Activity中,并且假定它继承自MvxActivity或类似内容,则您可以使用ViewModel
属性直接访问它。
这些活动也有通用版本,因此您不必自行输入ViewModel
属性。
所以如果你有:
public class MyActivity : MvxActivity<PictureViewModel>
{
}
然后您可以访问ViewModel
:
ViewModel.SomeViewModelProperty = myData;
此myData
对象可以是带有图片数据的字节数组。
MvvmCross确实有一个Picture takegin插件,它使用内置的Android相机拍照。如果你添加
MvvmCross.Plugins.PictureChooser
对于您的Android和Core项目,您可以直接在IMvxPictureChooserTask
中使用ViewModel
,而不涉及任何其他内容:
public class PictureViewModel : MvxViewModel
{
private IMvxPictureChooserTask _pictureTask;
public PictureViewModel(IMvxPictureChooserTask pictureTask)
{
_pictureTask = pictureTask;
}
private byte[] _pictureBytes;
// in some command:
private void DoTakePicture()
{
_pictureTask.TakePicture(500, 500, stream => {
_pictureBytes = ReadStream(stream);
}, () => {});
}
}