我有一個TabControl
兩個選項卡。一個標籤有一個商店列表,另一個標籤有一個員工列表。在商店標籤上,我有一個顯示商店所有員工的按鈕;要做到這一點,我想切換到另一個選項卡,並從該選項卡的用戶控件中調用showEmployeesFromStore(store_id store)
方法。我會怎麼做?用戶控件之間的通信
1
A
回答
0
我會在店面用戶控件SelectedStoreChanged
或類似的事情上公開一個事件。將事件代理中新選擇的store_id傳回。
用您的表單訂閱該事件。事件發生時,表單的工作是決定如何處理這些信息。在這種情況下,請從商店UserControl的SelectedStoreChanged
事件中提取store_id並將其傳遞到EmployeeUserControl.showEmployeesFromStore(store_id store)
保持您的控件對彼此無知。讓控件的所有者決定如何對控件引發的任何事件做出反應。夢想增加可用性,更好地分離主題區域,並且由於解開奇怪的控制流程而減少週末工作; o)
剛剛意識到我錯過了一個細節。您所說的按鈕應該在表單上,而不是任何用戶控件,假設您不希望它使用上述事件進行實時更新。在按鈕單擊時,表單應去檢查StoreUserControl.SelectedStoreID()
並將結果傳遞給EmployeeUserControl.showEmployeesFromStore()
1
您的錯誤智力模型。僅僅因爲用戶控件在TabControl上不可見並不意味着該代碼也是不可見的。只需在你的代碼中調用控件的方法,它當然需要公開。然後更改選項卡控件的SelectedIndex屬性以切換活動選項卡頁面。
該按鈕不應該是第一個用戶控件的一部分。事實上,最好不要使用按鈕,而是在用戶選擇另一個商店時觸發事件。
相關問題
- 1. Caliburn.Micro:用戶控件之間的通信
- 2. 用戶控件之間的通信
- 3. Silverlight中的用戶控件之間的通信
- 4. 頁面上用戶控件之間的通信 - C#/ ASP.NET
- 5. Sharepoint:WebPart和silverlight控件之間的通信
- 6. UI控件之間的通信
- 7. Webbrowser控件和C#之間的通信#
- 8. 在asp.net中嵌套用戶控件通信的用戶控件
- 9. JavaFX。控制器之間的通信
- 10. 控制器之間的通信JavaFX
- 11. 視圖控制器之間的通信
- 12. 嵌套控制器之間的通信
- 13. 如何在用戶控件和我的主窗體之間進行通信?
- 14. MVVM與兩個用戶控件(一個包含其他)之間的通信
- 15. Liferay - portlet之間的客戶端通信
- 16. 在Web部件中的控件之間進行通信
- 17. 通信控制器之間不可能
- 18. WPF - 用戶控件之間的綁定
- 19. 用戶控件之間傳遞值
- 20. Maquette中組件之間的通信
- 21. 展開AngularJS組件之間的通信
- 22. 閃存文件之間的通信
- 23. 擴展和插件之間的通信
- 24. 兄弟組件之間的通信Angular2
- 25. Reactjs組件之間的通信
- 26. 打字稿,部件之間的通信
- 27. 2個組件之間的Angular2通信
- 28. 頁面之間的通信
- 29. ViewModels之間的通信
- 30. 類之間的通信