2016-11-26 221 views
0

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

  1. 每个视图模型从BaseViewModel派生
  2. 的ViewModels有那些类型BaseViewModel的性能,这是子的ViewModels(嵌套父视图模型内)
  3. 每个视图模型具有相应的视图
  4. 意见具有对应于相应的视图模型
  5. 现在,创建视图模型的实例,当它是需要通过具体子的ViewModels的适当实例子的ViewModels ContentControl中(对照,可以显示模板视图)。视图应该基于ViewModels结构自动解析和嵌套(莫名其妙地)。

我没有定义因为可能有很多方法可以做到这一点。

我希望我的想法很清楚。这种方法可以轻松动态地创建ViewModels和Views。只需创建ViewModels树,例如使用XML,并基于此创建新功能。

的问题是:

  1. 是否有任何MVVM框架(mvvmcross,catel)配套Xamarin.Forms这种做法?
  2. 你将如何存储ViewModels的树 - 在XML,数据库表,...?
  3. 你将如何创建ViewModels的实例 - 反序列化,依赖注入,...?
  4. 如何创建视图并解决(如果框架不支持它)?

回答

1

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

  1. 我不知道是否有任何MVVM框架,支持这样的做法。可能Catel v5会支持这一点,但我没有检查过。我使用定制解决方案。
  2. 在我的解决方案中,我将ViewModels定义存储在父/子结构中的单个数据库表中。
  3. ViewModel实例由自定义工厂使用数据库表中的定义创建。
  4. 视图使用ValueConverters创建。这是可能的,因为每个视图都具有基于ViewModels结构创建的绑定。

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

0

是的!有完全适合你在找什么,并与Xamarin.Forms考虑创建一个MVVM框架:

FreshMvvM:https://github.com/rid00z/FreshMvvm

快速入门指南:http://www.michaelridland.com/xamarin/freshmvvm-quick-start-guide/

它是如何比其他选项?

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,并且已经过测试,可以满足我们的需求。

+0

感谢您的回复! FreshMvvm是否首先支持ViewModel(通过ViewModel导航)? – raV720

+0

是的,FreshMvvM支持ViewModel的第一个导航。实际上,导航应该通过ViewModels。 – Raven

+0

有趣的替代方案,除了支持嵌套用户控件(注入模型)的Catel之外,还没有意识到任何其他mvvm框架/工具包。 Catel不是一个好的选择,因为它不支持Xamarin Forms(还),所以现在你真的需要别的东西。我在哪里可以找到有关该功能的示例?特别是父母/子女关系对我来说应该很有趣。 –