2012-06-12 49 views
0

我有一個帶有「保存」和「取消」按鈕的用戶控件,它顯示在另一個用戶控件中。當用戶點擊保存時,我希望內部用戶控件執行標準功能,但我也希望父控件執行某些操作。處理這個問題的最好方法是什麼?將UserControl的按鈕鏈接到父控件上的功能

+2

最好的辦法是提高定製_save_事件,你可以在處理它會遞歸地傳遞給每個用戶控件的祖先「外部「控制。 http://www.codeproject.com/Articles/8797/Mastering-Page-UserControl-Communication#4.3 –

+1

你可以讓父母實現一個你想要的功能的接口,並且在你的用戶控件中有一個該接口的屬性引用父頁面。然後從你的子方法中,你可以調用你的屬性來引用父對象並調用方法。 – MilkyWayJoe

回答

2

最好的方法是提高自定義保存 - 您可以在「外部」控件中處理的事件。

http://www.codeproject.com/Articles/8797/Mastering-Page-UserControl-Communication#4.3

此事件的方法的優點是用戶控件仍然是可重複使用的。您可以在其他頁面(或UserControls)中使用UserControl A,即使它們不處理此事件。它是控制器的一部分,用於決定需要什麼以及應該做什麼。

UserControls通常不應該依賴於特定的控制器,否則它們是硬鏈接的,不可重用。這也是一個討厭的錯誤的好來源。 UserControl可能是其他嵌套(用戶)控件的控制器,但不適用於頁面本身。

通信摘要

  • 頁 - >用戶控件 - >公共屬性和方法
  • 用戶控件 - >網頁 - >事件
  • 用戶控件 - >用戶控件 - >控制器-用戶控件採用頁面角色(參見上文,您的使用案例)
相關問題