Caliburn Micro Screen激活事件

时间:2016-09-01 08:18:44

标签: c# wpf caliburn.micro avalondock

我在我的项目中使用Caliburn Micro和AvalonDock。我尝试在激活屏幕时处理事件。我的主视图模型是'Conductor.Collection.OneActive',每个标签“文档”都是'屏幕'。 我的主视图模型中有一个函数,如下所示:

public void CheckAndRegisterDocument(DocumentViewModel document)
    {
        DocumentViewModel exists = _documents.FirstOrDefault((d) => { return d.Equals(document); });
        // if not exists - add it 
        if(exists == null) {
            document.Activated += Document_Activated;
            _documents.Add(document);
            Items.Add(document);
        }
        // activate and set property object
        ActivateItem(document);

        Properties.PropertiesObject = document.Properties;
    }

    // document activated event handler
    private void Document_Activated(object sender, ActivationEventArgs e) {
        ActiveDocument = sender as DocumentViewModel;
    }

但是没有调用函数“Document_Activated”。我做错了什么?

1 个答案:

答案 0 :(得分:0)

不是将文档对象添加到文档集合中,而是将它们添加到已存在的this.Items集合中。

此外,每个文档对象都需要从Screen继承才能参与。

+应该+足以做到这一点,但有时可能需要告诉Caliburn"行为"你的观点模型通过ConductWith ......

document.ConductWith(this)

这是当前的导体视图模型。