Mvvm 嵌套视图模型的嵌套视图

Mvvm 嵌套视图模型的嵌套视图,mvvm,xamarin,xamarin.forms,mvvmcross,catel,Mvvm,Xamarin,Xamarin.forms,Mvvmcross,Catel,我正在寻找一个支持嵌套视图模型和视图的解决方案/mvvm框架。我的意思是: 每个ViewModel都派生自BaseViewModel ViewModels具有BaseViewModel类型的属性,这些属性是子ViewModels(嵌套在父ViewModel中) 每个视图模型都有相应的视图 视图具有与相应ViewModel的子ViewModel相对应的ContentControl(可以显示模板化视图的控件) 现在,在创建ViewModel实例时,需要传递具体子ViewModel的相应实例。视图应该

我正在寻找一个支持嵌套视图模型和视图的解决方案/mvvm框架。我的意思是:

  • 每个ViewModel都派生自BaseViewModel
  • ViewModels具有BaseViewModel类型的属性,这些属性是子ViewModels(嵌套在父ViewModel中)
  • 每个视图模型都有相应的视图
  • 视图具有与相应ViewModel的子ViewModel相对应的ContentControl(可以显示模板化视图的控件)
  • 现在,在创建ViewModel实例时,需要传递具体子ViewModel的相应实例。视图应该基于ViewModels结构自动解析和嵌套(某种程度上
  • 我没有以某种方式定义,因为可能有很多方法可以做到这一点

    我希望我的想法是清楚的。这种方法允许轻松动态地创建视图模型和视图。只需创建视图模型树,例如XML,并基于此创建新功能

    问题是:

  • 是否有任何mvvm框架(mvvmcross,catel)支持Xamarin.Forms的这种方法
  • 如何将视图模型树存储在XML、数据库表等中
  • 如何创建ViewModels的实例-反序列化、依赖项注入等等
  • 如何创建视图和解析(如果框架不支持)

  • 对!!有一个MVVM框架完全符合您的需求,并使用Xamarin创建。记住表单:

    FreshMvvM:

    快速入门指南:

    它与其他选项相比如何?

    It's super light and super simple
    It's specifically designed for Xamarin.Forms
    Designed to be easy to learn and develop (great when you are not ready for RxUI)
    Uses a Convention over Configuration
    
    功能

    PageModel to PageModel Navigation
    Automatic wiring of BindingContext
    Automatic wiring of Page events (eg. appearing)
    Basic methods (with values) on PageModel (init, reverseinit)
    Built in IOC Container
    PageModel Constructor Injection
    Basic methods available in Model, like Alert
    Built in Navigation types for SimpleNavigation, Tabbed and MasterDetail
    

    您可以根据需要嵌套或派生ViewModels(在本例中,我们有一个BaseViewModel)。我们一直在使用FreshMvvM进行启动,并且经过了作战测试,可以满足我们的任何需要。

    一段时间后,我可以分享一些关于我提出的问题的经验:

  • 我不知道是否有任何mvvm框架支持这种方法。可能CatelV5将支持此功能,但我没有检查此功能。我使用自定义解决方案
  • 在我的解决方案中,我将ViewModels定义存储在父/子结构的单个数据库表中
  • ViewModel实例由自定义工厂使用数据库表中的定义创建
  • 视图是使用ValueConverters创建的。这是可能的,因为每个视图都有基于ViewModels结构创建的绑定

  • 除了以上的答案,我可以建议使用棱镜。虽然它对我来说有一些缺点,但它是这种方法中最好的框架。

    感谢您的回复!FreshMvvm是否支持ViewModel first(通过ViewModel导航)?是的,FreshMvvm支持ViewModel first导航。实际上,导航应该是通过ViewModels进行的。有趣的替代方法是,除了Catel之外,没有任何其他支持嵌套用户控件(使用注入模型)的mvvm框架/工具包。Catel不是一个很好的选择,因为它还不支持Xamarin表单,所以现在你真的需要其他东西。在哪里可以找到有关该功能的示例?特别是父母/孩子的关系对我来说应该很有趣。谢谢瑞文,我明天会试试。关于RxUI,你能更具体一点吗?你是说反应?它是否支持嵌套用户控件和ViewModel first导航?我刚刚查看了文档和示例,但没有任何关于嵌套ViewModel的内容。你能举个例子吗?