我正在使用智能客户端软件工厂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多个项重用相同的键,因此当该操作被触发时,它将显示选项卡,而不是创建选项卡的新实例。这很好用。
然而,有一个缺点。激活后,我需要在该项目的演示者中运行检查。所以我需要在presenter上调用一个方法。有没有办法在presenter上调用一个方法,或者当工作项被激活时,是否有一个事件在视图上运行?我不知道该怎么做?
谢谢。
发布于 2013-09-16 02:05:58
如果您使用Smart 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类,则可以运行所需的代码。
https://stackoverflow.com/questions/18594585
复制相似问题