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



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

经过一些研究,我最终所做的是为每个步骤创建 ContentView(再次为每个步骤显示和隐藏它们),因此 XAML 为每个步骤进行模块化处理,并且每个步骤都有一个视图模型。我成功地将 ContentView 绑定到每个视图模型,但现在我在传达不同的视图模型信息时遇到了问题。

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

问题是我不太喜欢这个解决方案,因为我发现它太复杂了,最终会在 NavigationViewModel 中订阅/发送到每个子视图模型以传递共享信息。

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

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

> 最近我遇到了同样的问题,我的ViewModel变得非常大(有数百个属性)。所以我所做的是:

  1. 创建了一个接口类。把所有公共属性放在那里。假设IA。
  2. 创建了另一个继承 IA 的类。

现在多个类正在固有IA,减少了整体属性数量。

相关内容

  • 没有找到相关文章

最新更新