gpt4 book ai didi

c# - 如何以及是否建立复合 View ?

转载 作者:太空狗 更新时间:2023-10-29 21:40:57 24 4
gpt4 key购买 nike

我的申请并不复杂。它从网络服务中检索单个实体,对其进行编辑并将其发回。实体本身相当大,有一些关联和几十个属性。将其视为一个大文档(它实际上是 一个文档)。

我想过使用多个嵌套 View 来构建我的应用程序。所以我有一个完整实体的 View 和 View 模型,但这包含各种属性的多个 View 和 View 模型。这是一个好方法吗?还是我以后会遇到很多问题?

另外:我将如何连接它们?我是将嵌套 View 的 Datacontext 绑定(bind)到“实体”(域中的“真实”对象)还是由所谓的“父”ViewModel 创建的 ViewModel?

我应该使用 MVVM 框架,例如 MVVM Light、Prism 还是 Caliburn.Micro?

最佳答案

无论您有文档实体的一个 View 还是文档实体的多个 subview ,它们最终都应该共享同一个文档实体。如果这只是一个小型应用程序,那么表示文档实体的单个 View 可能是一种不错的方法。

但是,也可以将实体分解成它的组成部分。这将允许您为每个部分创建更易于管理的模型。在这种情况下,您需要使用发布/订阅模型在实体更新时传递它,以便在任何其他组件修改实体时每个组件部分都更新为最新的实体。

如果您决定使用 subview ,那么 MVVM 框架将使它更易于管理。也就是说,即使您采用一个大 View ,MVVM 框架仍会为您处理很多基本管道。

我已经使用了您提到的所有三个 MVVM 框架,并建议使用 Caliburn.Micro 或 MVVM Light。棱镜可能有点让人不知所措,而且学习曲线要​​陡峭得多。

编辑

基于您的附加信息并假设:

  • 您的文档实体由几个复杂的属性组成。
  • 这些复杂属性中的每一个(大多数)代表一个信息子集,可以根据自己的优点进行编辑,即文档元数据、文档作者信息等...

然后你可以按照以下方式做一些事情:

  • 为表示文档实体子集的每个复杂属性创建用户控件。每个用户控件都可以拥有自己的 ViewModel,其中包含有关如何编辑数据的逻辑。
  • 创建一个基本 View (Shell)和布局,其中将注入(inject)每个用户控件;使用 ContentControl 作为 Shell 中每个用户控件的容器。 Shell 的 ViewModel 将负责将各种用户控件注入(inject)到每个 ContentControl 中。
  • 创建一个 Controller 来完成文档实体的繁重工作,即获取新的、更新等...
  • 当任何用户控件修改数据时,将其发送回 Controller , Controller 将更新文档实体,然后将新实体广播给所有人;这是您将使用发布/订阅模型的地方。

使用 Caliburn.Micro 或 MVVM Light 真的没有关系;它们都为基本管道提供了良好的基础。随心所欲。

关于c# - 如何以及是否建立复合 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9196215/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com