所以我一直在浏览网页,但随着MVVMCross的所有更新,我无法弄清楚如何做到这一点。
我非常直接地告诉我,我可以绑定以下内容:
MvxFluentBindingDescriptionSet<PageOneView, PageOneViewModel> set = this.CreateBindingSet<PageOneView, PageOneViewModel>();
set.Bind(_HearingLossPickerView).To(vm => vm.HearingLoss);
set.Apply();
但是,这会创建我的viewmodel的 new 实例。我希望能够使用现有的viewmodel。我试过设置DataContext,但没有骰子。
所以基本上我的流程看起来像这样
ViewController(PagesViewController) - &gt;查看(PageOneView)
MainViewModel(PagesViewModel) - &gt; SubViewModel(PageOneViewModel)
我可以像使用该集一样创建PagesViewModel
,我希望基本上将PageOneViewModel
从PagesViewModel
传递到PageOneView
非常基本的东西,所以如果有人可以帮助那些amazballs。
答案 0 :(得分:1)
MvvmCross允许您覆盖视图模型位置 - 请参阅https://github.com/MvvmCross/MvvmCross/wiki/Customising-using-App-and-Setup
中有关此内容的部分和示例代码此外,您可以直接在View代码中设置ViewModel - 只需确保在base.ViewDidLoad
之前执行此操作,这是MvvmCross执行ViewModel位置的地方。
请注意,在Android和WindowsPhone等环境中依赖预先创建ViewModel的基本模式可能存在问题,其中墓碑意味着您的应用可以在任何活动或页面上关闭并重新启动。
答案 1 :(得分:0)
斯图尔特的回应非常可靠。伟大的东西人。但是在观看N + 1系列中的一些视频之后,你创建了我想要做的事情,我需要做的是延迟绑定。
所以对于其他人来说,请查看N+28 for iOS
实施例
this.DelayBind(() =>
{
MvxFluentBindingDescriptionSet<SomeView, SomeViewModel> set = this.CreateBindingSet<SomeView, SomeViewModel>();
set.Bind(SubmitButton).To(v => v.NextCommand);
set.Apply();
});
MvxFluentBindingDescriptionSet<ViewController, ViewControllerViewModel> set = this.CreateBindingSet<ViewController, ViewControllerViewModel>();
set.Bind(SomePage).For(p => p.DataContext).To(v => v.SomeViewModel);