Caliburn微屏幕激活事件

本文关键字:事件 激活 屏幕 Caliburn | 更新日期: 2023-09-27 18:05:10

我在我的项目中使用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"没有被调用。我做错了什么?

Caliburn微屏幕激活事件

不是将文档对象添加到文档集合中,而是将它们添加到已经存在的文档集合中。项目集合。

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

这个+应该足够了,但有时可能需要告诉Caliburn通过传导来"传导"你的视图模型…

document.ConductWith(this)

这里是当前导体视图模型