gpt4 book ai didi

c# - 正确处理 MVVM 父级中子级引发的事件

转载 作者:行者123 更新时间:2023-11-30 16:22:57 25 4
gpt4 key购买 nike

我在这里稍微简化一下:

我有一个选项卡控件,希望单个选项卡能够创建更多选项卡; sibling ,如果你愿意的话。所以我称标签控件为父控件,其标签页为子控件。

使用 MVVM,我的选项卡控件 View 模型是这样的:

class ParentViewModel
{
ObservableCollection<ChildViewModel> _pages;

public ObservableCollection<ChildViewModel> Pages
{
get
{
if (_pages == null)
_pages = new ObservableCollection<ChildViewModel>();
return _pages;
}
}

public ParentViewModel()
{
Pages.Add(new ChildViewModel());
}
}

所以我的 ParentViewModel 上有一组 ChildViewModel 对象。

这很有用,而且从 ParentViewModel 内部,我当然可以轻松地将我想要的所有额外 ChildViewModel 对象添加到我的集合中,并将它们很好地反射(reflect)在我的 View 中。

我想要做的是允许在 ChildView 上按下按钮(例如),从而将另一个 ChildViewModel 添加到 ParentViewModel 对象的集合中。

我已经阅读了很多关于中继命令、路由命令、相对源绑定(bind)、依赖注入(inject)模式等的内容,但是有人能告诉我实现这一目标的“正确”(在 MVVM 意义上)方式,以及具体如何实现吗最好这样做。谢谢!

最佳答案

我喜欢使用事件聚合来处理这种情况。

这是 Unity 添加的功能(如果您还没有使用它)

基本上,您将事件聚合器添加到您的依赖注入(inject)中,然后您的父级将作为事件的监听器订阅,您的 child 将发布该事件。

这样做的好处是, children 不知道谁在听,而 parent 只知道它有一个事件请求要处理。更多信息可以去HERE!

关于c# - 正确处理 MVVM 父级中子级引发的事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12057774/

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