簡體   English   中英

在Silverlight中從子UserControl調用父UserControl方法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM