dea*_*vmc 5 c# algorithm wpf mvvm
我最近一直在研究MVVM,我似乎得到了整体的想法.虽然有一些不起眼的东西,但我并不完全理解,并且正在跳跃,在这里得到一些答案,干杯!
将一个数据模型用于整个应用程序是不正确的.通常,如果我创建一个小实用程序,我会在一个类中拥有所有逻辑数据.这意味着我可以拥有如下内容:
DataStore myData = new DataStore;
Run Code Online (Sandbox Code Playgroud)如果可以拥有一个数据模型就可以拥有多个模型视图,比如说一个代表每个窗口或视图(这就是我设想的MVVM工作方式).
如果有一个具有多个模型视图,那么上面给出的模型似乎必须在第一个窗口(视图)之前声明,应该在哪里声明它?模型是否应通过对后续模型视图的引用传递?由于视图实例化模型视图,因此窗口或页面(视图)需要知道模型以将其传递给模型视图,这不会成为耦合的来源.
很抱歉,如果这是一个很多问题,我会在一个窗口或页面感知中获得MVVM的想法,但是一旦我添加多个视图,我的系统就会崩溃.我可以使用单独的模型访问外部源来获取其数据,但如果数据需要在视图之间持续存在,我就会迷失方向.
感谢所有花时间回应!
一些想法:
简单的应用程序不一定需要MVVM的复杂性 - 您可以通过消除ViewModel并直接使用底层模型来逃脱.请注意,不要将此方法延伸到断点 - 因为WPF非常依赖于诸如INotifyPropertyChanged和DependencyProperties之类的东西.您不希望开始将这些合并到您的模型类中.
好的,可以.但是,请记住,如果只有一个Model实例,则更简单 - 否则,当您要保存(或丢失一个版本的更改)时,您需要处理来自多个视图的合并更改.如果ViewModels引用相同的底层模型,那么这是可行的.
您无法避免MVVM中的某种级别的耦合.但是,(如果我正确理解你的问题)引入ModelViews之间的耦合可能是一个坏主意 - 因为它打破了为特定视图优化模型的每一个离散视角的目的.