c# - MVVM 良好的设计。数据集或 RowViewModel

标签 c# mvvm viewmodel

我刚刚开始学习 MVVM,遇到了一个困境。

如果我有一个主 ViewModel,并且在该模型中我有许多数据集。现在我应该为数据集中的每一行创建一个新的 ViewModel 吗?或者将 DataSet 本身公开为 DependencyProperty?

目前数据集内有大约 20 行,并且迭代每一行以创建与每一行绑定(bind)的 ViewModel 的想法......出于性能原因可能不是最佳选择以及将来的内存原因,例如当有 2000 多行时。

我是否仍然应该继续创建 RowViewModel 并迭代数据集以创建新的 RowViewModel?并拥有 RowViewModels 的 ObservableCollection 还是仅公开 DataSet?

此数据集/ View 模型的绑定(bind)将是到组合框,因此为什么仅加载可视行可能会出现性能问题,因为用户希望能够毫无延迟地滚动。

任何帮助将不胜感激。

最佳答案

如果您有一个复杂的组合框,其中每行都有一个 id、名称、图片(可能涉及一些逻辑)等,并且您有一个代表每一行的 View ,那么您需要创建具有所有绑定(bind)的 rowViewModel因为您必须测试该代码(TDD!)。

对于简单的组合框,您只想每行显示一个字符串,绑定(bind)字符串列表或数据集就足够了。

正如彼得所说,要小心组合框,它可能会变得像这个一样大。您的用户不会喜欢它:)

此外,由于您关心性能,请考虑使用 DataReader 填充字符串列表,而不是加载一个大的 DataSet。

干杯,

安德烈

关于c# - MVVM 良好的设计。数据集或 RowViewModel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2660197/

相关文章:

.net - ViewModel 类的可重用性如何?

silverlight - 从 View 绑定(bind)到基本 View 模型命令

c# - 此属性 setter 中的条件是否有效?

c# - ABCpdf转换html anchor 跳转到同一个PDF中的另一个页面

c# - 如何读取 C# 测试项目中的 app.config 值

c# - 带有 MVVM 和 CommandParameter 的 ListBox SelectionChanged 事件

WPF:更改后重置组合框

c# - 在集合 MVVM 中过滤集合

c# - 启动启动进程 B 的 Win32 进程 A——获取 B 的 ID/HWND

asp.net-mvc - MVC - 一次性创建对象和相关对象