gpt4 book ai didi

c# - 一些 MVVM 问题(WPF C#)

转载 作者:太空狗 更新时间:2023-10-29 23:04:28 26 4
gpt4 key购买 nike

我最近一直在研究 MVVM,我似乎了解了总体思路。虽然有一些琐碎的细节我没有完全理解,但希望能在这里得到一些答案,干杯!

  1. 对整个应用程序使用一种数据模型是否不正确。通常,如果我正在创建一个小型实用程序,我会将所有逻辑数据放在一个类中。这意味着我可以拥有如下内容:

    DataStore myData = new DataStore;
  2. 如果可以拥有一个数据模型,那么拥有多个模型 View 也可以,比如说一个代表每个窗口或 View (这就是我设想的 MVVM 工作方式)。

  3. 鉴于以上,如果有多个模型 View ,模型似乎必须在第一个窗口( View )之前声明,应该在哪里声明?模型应该通过对后续模型 View 的引用来传递吗?这不是耦合的来源吗,因为窗口或页面( View )需要了解模型才能将其传递给模型 View ,因为 View 实例化了模型 View 。

抱歉,如果问题太多,我在单个窗口或页面意义上理解 MVVM 的想法,但是一旦我添加多个 View ,我的系统就会崩溃。我可以让它与访问外部源的单独模型一起工作以获取其数据,但如果数据需要在 View 之间保留,我就会迷路。

感谢所有花时间回复的人!

最佳答案

一些想法:

  1. 简单的应用程序不一定需要 MVVM 的复杂性 - 您或许可以省去 ViewModel - 并直接使用底层模型。请注意,不要将这种方法延伸到临界点——因为 WPF 非常依赖 INotifyPropertyChanged 和 DependencyProperties 之类的东西。您不希望不必要地开始将它们合并到您的模型类中。

  2. 是的,没关系。但是,... 请记住,如果只有一个模型实例,它会更简单 - 否则您需要在要保存(或丢失一个版本的更改)时处理来自多个 View 的合并更改。如果 ViewModel 引用相同的底层模型,这是可行的。

  3. 您无法在 MVVM 中避免一定程度的耦合。但是,(如果我正确理解您的问题)在 ModelView 之间引入耦合可能不是一个好主意 - 因为它违背了目的使每个模型成为针对特定 View 优化的模型的离散视角。

关于c# - 一些 MVVM 问题(WPF C#),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2015705/

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