Caliburn Micro Screen 激活事件
Caliburn Micro Screen Activated Events
我在我的项目中使用 Caliburn Micro 和 AvalonDock。我尝试在激活屏幕时处理事件。我的主视图模型是 'Conductor.Collection.OneActive',每个选项卡 "document" 是 'Screen'。
我的主视图模型中有这样一个函数:
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"没有被调用。我做错了什么?
不要将您的文档对象添加到文档集合中,而是将它们添加到已经存在的 this.Items 集合中。
此外,每个文档对象都需要继承 Screen 才能参与。
这 + 应该 + 足以解决问题,但有时可能需要通过 ConductWith 告诉 Caliburn "conduct" 您的视图模型...
document.ConductWith(this)
这是当前的导体视图模型。
我在我的项目中使用 Caliburn Micro 和 AvalonDock。我尝试在激活屏幕时处理事件。我的主视图模型是 'Conductor.Collection.OneActive',每个选项卡 "document" 是 'Screen'。 我的主视图模型中有这样一个函数:
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"没有被调用。我做错了什么?
不要将您的文档对象添加到文档集合中,而是将它们添加到已经存在的 this.Items 集合中。
此外,每个文档对象都需要继承 Screen 才能参与。
这 + 应该 + 足以解决问题,但有时可能需要通过 ConductWith 告诉 Caliburn "conduct" 您的视图模型...
document.ConductWith(this)
这是当前的导体视图模型。