gpt4 book ai didi

c# - 在 WPF MVVM 中处理模型中的集合

转载 作者:太空宇宙 更新时间:2023-11-03 16:05:07 24 4
gpt4 key购买 nike

我已经开始学习 WPF\MVVM 方法并且有点困惑。我有:

class ModelAAA {
public List<Foo> Foos{get; protected set;}
//..

public void Boo()
{
//Some complex logic updating Foos
}
}

class ViewModelAAA{

private ModelAAA _modelAAA

public ObservableCollection<Foo> Foos{get; protected set;}

public void ViewModelAAA(ModelAAA modelAAA)
{
this._modelAAA = modelAAA;
this.Foos = new ObservableCollection(modelAAA.Foos)
}

public void Boo()
{
this._modelAAA.Boo();
//What should I do here?
}
}

因此,如果我使用 View 模型的 Boo 方法,什么是更新 ViewModel 中集合的正确 View 。我的想法很少,但它们似乎都很丑陋。我应该每次都手动重新创建\更改 viewModel Foos 吗?正如我所理解的那样,ObservableCollection 不是对象之类的包装器。

附言我想在模型中使用 ObservableCollection

最佳答案

您的模型不需要使用 ObservableCollection,但必须通知您的 ViewModel 集合中发生了一些变化。

这会创建您的 List 的副本,它确实是可观察的,但之后根本没有改变:

this.Foos = new ObservableCollection(modelAAA.Foos);

我不建议每次 Model-Collection 更改时都创建一个新的 ObservableCollection。而是在您的模型集合中实现 INotifyCollectionChanged 并正确处理您的 Viewmodel 中的事件。

关于c# - 在 WPF MVVM 中处理模型中的集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19791051/

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