如何在使用 Mvvmcross 5.x 导航时接收捆绑包



我是Android编程的新手。 我选择了MvvmCross 5.x作为我的框架。 我想我了解如何从ViewModel发送"复杂"对象字典(捆绑包):

Task Navigate<TParameter>(IMvxViewModel<TParameter> viewModel,
TParameter param, 
IMvxBundle presentationBundle = null);

如何接收正在导航到的ViewModel中的捆绑包?
也就是说,字典/捆绑包调用什么方法?

用于导航的presentationBundle参数是ViewModelRequest对象的一部分,该对象将传递给MvxViewPresenterShow方法。您可以在平台上创建视图演示器的自定义实现,并使用PresentationBundle自定义导航过渡的外观或修改导航堆栈。

请参阅 GitHub 上的ViewModelRequest源代码。属性PresentationValues将包含您在导航中传递的捆绑包。以下是 Android 上自定义视图演示器的实现示例:

class CustomViewPresenter : MvxAndroidViewPresenter
{
public CustomViewPresenter(IEnumerable<Assembly> androidViewAssemblies)
: base(androidViewAssemblies)
{
}
public override void Show(MvxViewModelRequest request)
{
if (request.PresentationValues.ContainsKey("something"))
{
//handle presentation value
}
base.Show(request);
}
}

您可以在演示器中重写更多使用ViewModelRequest的方法,然后您可以在其中访问PresentationValues属性。这些特定于每个平台,取决于正在执行的导航类型。在安卓上,你有ShowActivityShowDialogFragmentShowFragment等。你也可以在MvvmCross Github上看到MvxAndroidViewPresenter的默认实现。

您可以在这篇博客文章中看到一个很好的例子,说明令人敬畏的 Greg Shackles 如何使用带有PresentationBundle的自定义ViewPresenter。他还对视图演示者进行了很好的介绍。

相关内容

  • 没有找到相关文章

最新更新