父子模型互动

时间:2010-12-26 16:34:45

标签: wpf mvvm caliburn.micro

是否可以在caliburn.micro中设置类似wpf窗口所有者的东西?

我有PARENT VIEW MODEL,从这个模型我用这种方法打开CHILD SCREEN {VIEW MODEL}:

    public IEnumerable<IResult> Open()
    {

        yield return new ShowWindow("ChatScreen")
            .InitializeWith(_service
            .DetailData(Account, _selectedFriend.Value.Nick),
            AvatarImage);
    }

此方法创建一个新的WPF WINDOW - CHILD SCREEN并使用一些变量初始化CHILD VIEW MODEL。

我想设置类似这样的东西CHILD_SCREEN.PARENT = PARENT_VIEW_MODEL。

如果我关闭PARENT VIEW MODEL,它也会关闭所有的CHILD MODELS。

还有一种方法可以在MAIN VIEW MODEL中检查我的情况WPF窗口中的屏幕是否处于活动/非活动状态?

1 个答案:

答案 0 :(得分:0)

您需要为此编写基础结构。我假设ShowWindow使用Caliburn.Micro的WindowManager来显示窗口?在这种情况下,您需要维护对每个打开的窗口的引用。这个父/子关系是否只是为了在父母关闭时关闭所有孩子?一种选择是实现您自己的Conductor类型,它维护一个打开的窗口列表,以及您自己的IScreen / Screen类型,它们保持父/子关系状态。