การเรียกใช้วิธีการของผู้นำเสนอในการเปิดใช้งาน

ฉันใช้ 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

หลายรายการใช้คีย์เดียวกันซ้ำ ดังนั้นเมื่อมีการทริกเกอร์การกระทำนั้น จะแสดงแท็บแทนการสร้างอินสแตนซ์ใหม่ มันใช้งานได้ดี

อย่างไรก็ตามมีข้อเสียเปรียบประการหนึ่ง เมื่อเปิดใช้งานแล้ว ฉันจะต้องตรวจสอบภายในผู้นำเสนอของรายการนั้น เลยต้องเรียกเมธอดใส่ผู้นำเสนอ มีวิธีการเรียกใช้เมธอดบนผู้นำเสนอ หรือมีเหตุการณ์ที่ทำงานบนมุมมองเมื่อรายการงานถูกเปิดใช้งานหรือไม่? ฉันไม่แน่ใจว่าจะทำให้มันเกิดขึ้นได้อย่างไร?

ขอบคุณ.


person Brian Mains    schedule 03.09.2013    source แหล่งที่มา


คำตอบ (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 ของคุณ คุณสามารถเรียกใช้โค้ดที่ต้องการได้

person neverseenjack    schedule 15.09.2013