0

我正在使用 Smart Client Software Factory 2008。在模块控制器中,我的代码仅在尚未创建时创建新的子控制器,方法如下:

Dim key = "Item-" + item.ID.ToString()
Dim childWorkItem = Me.WorkItem.WorkItems.Get(Of ControlledWorkItem(Of ItemWorkItemController))(key)
If childWorkItem Is Nothing Then
    childWorkItem = Me.WorkItem.WorkItems.AddNew(Of ControlledWorkItem(Of ItemWorkItemController))(key)
Else
    childWorkItem.Activate()
End If

多个项目重复使用相同的键,因此当触发该操作时,它会显示选项卡而不是创建它的新实例。这很好用。

但是,有一个缺点。激活后,我需要在该项目的演示者中运行检查。所以我需要在演示者上调用一个方法。有没有办法在演示者上调用方法,或者当工作项被激活时是否有一个事件在视图上运行?我不知道如何做到这一点?

谢谢。

4

1 回答 1

0

如果您使用 aSmart Part作为您的视图,您应该能够使用IWorkspace.SmartPartActivated事件来完成此操作。

这就是我在我的项目中设置它的方式。抱歉,我的代码都是 C#,但你应该能够相对容易地在 VB 中应用它。

该类WorkItemController具有这样的Activate方法设置

ISmartPartView _smartPartView

public void Activate()
{
   IWorkspace contentWorkspace = this.WorkItem.Workspaces[WorkspaceNames.ShellContentWorkspace];
   contentWorkspace.Activate(_smartPartView);
   WorkItem.Activate();
}

在 ISmartPartView Presenter 类中,您应该能够为SmartPartActivated事件创建一个处理程序,如下所示:

IWorkspace contentWorkspace = this.WorkItem.Workspaces[WorkspaceNames.ShellContentWorkspace];
contentWorkspace.SmartPartActivated += workSpaceSmartPart_ActivatedHandler;

workSpaceSmartPart_ActivatedHandler事件处理程序中,您可以检查正在激活的 SmartPart,如果它是您的 ISmartPartView 类,您可以运行所需的代码。

于 2013-09-15T18:05:58.107 回答