Вызов метода предъявителя при активации

Я использую 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

Несколько элементов повторно используют один и тот же ключ, поэтому при запуске этого действия вместо создания нового экземпляра отображается вкладка. Это прекрасно работает.

Однако есть один недостаток. После активации мне нужно выполнить проверку в презентаторе этого элемента. Поэтому мне нужно вызвать метод для докладчика. Есть ли способ вызвать метод в презентаторе или есть событие, которое запускается в представлении, когда рабочий элемент активирован? Я не уверен, как это сделать?

Благодарю.

1 ответ

Если вы используете 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, вы можете запустить нужный код.

Другие вопросы по тегам