Вызов метода предъявителя при активации
Я использую 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, вы можете запустить нужный код.