我刚刚开始学习 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/