[英]Calling parent UserControl method from a child UserControl in Silverlight
我有一個C#Silverlight應用程序。 該應用程序具有帶2x2網格的UserControl。 網格的每個單元都有自己的UserControl。 這些子UserControl元素均具有一個Button。 當用戶單擊子項中的Button時,我要執行父UserControl中的方法。 然后,此方法將信息發送到其他三個子UserControls。 我該怎么做呢?
謝謝!
如果使用綁定,則可以將模型綁定到主控件的DataContext,例如以下模型:
class MasterViewModel{
///Action for child user control 1
void DoUserControlAction1(){ //... }
///Action for child user control 2
void DoUserControlAction2(){ //... }
//...
///Action for child user control n
void DoUserControlActionN(){ //... }
}
然后在每個子控件中,由於其DataContext是從父主UserControl的綁定DataContext繼承的,因此:
class UserControl1{
public void HandleButtonClick(object sender, EventArgs e){
((MasterViewModel) DataContext).DoUserControlAction1();
}
}
這種邏輯應該在您綁定到主控件的ViewModel中。
如果沒有綁定,則始終可以將事件添加到子控件中,然后將其冒泡到主控件中並在那里進行處理。
如果使用的是PRISM,則可以使用EventAggregator或MVVMLight中的消息傳遞模式將消息從子userControls VM傳遞到父控件VM。
這種分離類型可以幫助封裝控件之間的依賴關系。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.