gpt4 book ai didi

wpf - 如何使用 Collections 构建 MVVM?

转载 作者:行者123 更新时间:2023-12-03 11:28:41 24 4
gpt4 key购买 nike

当涉及列表/集合时,我无法理解如何应用 MVVM 模式。

MainModel有一些属性和方法,以及一个包含其他 DetailModel 的列表对象。 DetailModel可以添加、删除或重新排序对象。
MainView将显示一些与根模型相关的控件,并具有 ListBox从列表中填充。每个项目将通过 DetailModelView 拥有自己的 subview UserControl .

最后还有一个MainViewModel .这具有 MainModel 支持的属性的属性和方法,绑定(bind)到主视图,更改通知保持一切同步。 (到目前为止,我对这种模式感到满意 - 更多地说明这一点,以防我遗漏了一些基本的东西......)

在处理列表时,我感到困惑。我遇到了几个例子,其中 MainViewModel简单地公开 DetailModels 的列表到 View 和 DetailModelViews直接绑定(bind)到模型。这很有效,但有问题。它并没有始终遵循这种模式(不存在 DetailViewModel),它促使我在我的详细模型中包含一些与 UI 相关的代码。我似乎很清楚 MainViewModel应该公开 DetailViewModels 的列表为 UI 绑定(bind),但我被困在如何实现这样的事情上!

应该如何管理这两个列表( DetailModelsDetailViewModels )?我对最初填充 DetailViewModel 的位置感到非常困惑。列表,以及我应该如何处理添加、删除或更改项目的顺序以使它们保持同步!

最佳答案

您有权拥有一个单独的 DetailModels列表和 DetailViewModels列表。 DetailViewModels 列表应该是 ObservableCollection<DetailViewModel> 类型的属性。 .您可以在设置模型时填充可观察列表(或者在构建时,如果您将模型传递给 ViewModel 的构造函数。)

private ObservableCollection<DetailViewModel> m_details;
public IEnumerable<DetailViewModel> Details
{
get { return m_details; }
}

您可以订阅 m_details。 CollectionChanged .这是您可以处理重新排序模型中列表内容的地方。

我希望这有帮助。

关于wpf - 如何使用 Collections 构建 MVVM?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7178801/

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