MVVM Light的金色实现

问题描述 投票:0回答:1

问题可以归纳为:使用MVVM Light在UWP上开发清晰的应用程序的最佳方法是哪一种?也许我错过了,但是我没有找到样本或类似的东西...

我已经看到了很多讨论和变化:模型–我只在此处放置数据,还是应该创建DAL模型?如果使用EF,是否需要2层(DAL和模型)?

应该可以观察到吗?加载/保存或填充方法应该在此处还是在DAL中?

然后我们进入上层:如果您在一个类中有一个列表(例如公司–员工),那么List对象是在Model还是在ViewModel中?

但是如果我有模型公司和通过EF上的LINQ收集的公司列表(列表),如何将其转换为ObservableCollection<CompanyViewModel>?我应该做一个循环并添加新对象吗?效率不是很好,不是很好...没有更好的方法吗?

模型是否引发ContentChanged? (在我看来答案是否定的,应该由视图模型提出)

对于ViewModel,您是基于视图(主窗体ViewModel,TreeView ViewModel)还是基于数据(CompanyViewModel)来映射视图模型?还是两者(在这种情况下为什么?)?

所有ViewModels应该都是可观察的,因此所有操作都应引发此处或以下更改的内容?

我已经看到了所有可能的答案,所以这就是为什么我问:;这是“黄金”方式? “最佳实践”?我知道几乎所有人都“可以工作”,但是我的目标是要知道“最好的”(=更有效率,从设计的角度出发干净等)。

问题可以归纳为:使用MVVM Light在UWP上开发清晰的应用程序的最佳方法是哪一种?也许我错过了,但是我没有找到一个样本或类似的样本……我看到了很多讨论,并且...

c# entity-framework mvvm uwp mvvm-light
1个回答
0
投票

在将更改传播到UI的情况下,建议的遍历和添加新对象的解决方案并不像听起来那样糟糕。如果您的数据源包含一个“上次更改”属性,该属性仅允许您过滤实际更改,则只能获取更改后的数据。否则,无论如何都必须查询全部项目,因此对数据进行另一个循环不会改变复杂性(仍然与项目数呈线性关系)。如果您有某种ID,则只需检查ObservableCollection中是否存在此类ID,然后添加即可。

© www.soinside.com 2019 - 2024. All rights reserved.