从Silverlight中的子UserControl调用父UserControl方法

时间:2011-03-28 14:16:39

标签: c# silverlight

我有一个C#Silverlight应用程序。此应用程序具有带2x2网格的UserControl。 Grid的每个单元格都有自己的UserControl。这些子UserControl元素中的每一个都有一个Button。当用户单击子项中的Button时,我想执行父UserControl中的方法。然后,此方法将信息发送到其他三个子UserControls。我该怎么做?

谢谢!

2 个答案:

答案 0 :(得分:0)

如果您正在使用绑定,则可以将模型绑定到主控件的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是从父Master UserControl的绑定DataContext继承的:

class UserControl1{
  public void HandleButtonClick(object sender, EventArgs e){
    ((MasterViewModel) DataContext).DoUserControlAction1();
  }
}

此类逻辑应位于已绑定到主控件的ViewModel中。

如果您没有绑定,您可以随时向子控件添加事件,并将它们冒泡到主控件并在那里处理。

答案 1 :(得分:0)

如果您使用的是PRISM,则可以使用EventAggregator或MVVMLight中的消息传递模式将消息从子userControls VM传递到父控制VM。

这种类型的分离可以帮助封装控件之间的依赖关系。