拆分大视图模型/ XAML的最佳方法

时间:2019-07-17 10:54:35

标签: c# xamarin.forms mvvmcross viewmodel

我正在重构大视图模型及其相关的XAML页面。我用棱镜。主页具有清晰的功能,创建头像。有创建虚拟形象的步骤,例如拍照,编辑图片等。我现在有一个详细的侧边栏,用于控制步骤的导航,还有一个主要内容区域,根据这些步骤,我可以显示不同的内容。我根据步骤隐藏/显示适当的视图。该项目不断发展,现在我拥有2000+的线视图模型和巨大的XAML文件。

经过一些研究,我最终要做的是为每个步骤创建ContentView(再次为每个步骤显示和隐藏它们),因此XAML针对每个步骤进行了模块化,并对每个步骤进行了查看。我已成功将ContentView绑定到每个ViewModel,但是现在在传达不同的View Models信息时遇到问题。

与之前所有视图都在同一个视图模型中一样,如果需要,所有视图可以共享相同的绑定属性。现在,由于每个视图模型都是独立的,因此我需要找到一种正确共享此信息的方法。我的第一种方法是使用消息传递中心。这样,我可以将需要共享的信息发送到管理步骤之间的导航的视图模型(NavigationViewModel),并且可以将此信息发送到以下视图模型。

问题是我不太喜欢这个解决方案,因为我觉得它太复杂了,最终会在NavigationViewModel中产生很多代码,以订阅/发送到每个子ViewModel来传递共享信息。

所以我的问题是,您是否知道还有其他方法可以简化视图模型之间的通信?

我什至考虑过使用部分类来“隐藏”我的大视图模型的复杂性,但是我认为这不是一个好主意。

1 个答案:

答案 0 :(得分:0)

遗憾的是,我遇到了同样的问题,我的ViewModel变得非常庞大(具有数百个属性)。所以我要做的是:

  1. 创建一个Interface类,在其中放置所有通用属性。比方说IA。
  2. 创建了另一个继承IA的类。

现在,多个类都继承了IA,从而减少了总体属性数。

相关问题