Silverlight中用户控件之间的通信

时间:2011-05-03 13:58:28

标签: silverlight events user-controls event-handling

我对Silverlight很新,所以我遇到了关于用户控件之间通信的问题。我有用户控件,其中有按钮,应该设置其他用户控件的一些属性。例如,IsEnabled属性设置为true或false或者可见性,依此类推。我实际上知道一个解决方案,如:

class UserControl1:Usercontrol
{
   public UserControl2 uc2;

private void Button1_Click(object sender,RoutedEventArgs e)
   {
       uc2.IsEnabled = FALSE; //或uc2.SomeMethod();
   }
}

类似于UserControl2类,然后在主页面中我只添加:
UserControl1.uc2 = UserControl2;

我的问题是,我如何通过事件处理程序执行此操作?或者可能还有其他更好的解决方案?一个简单的例子是受欢迎的。感谢。

1 个答案:

答案 0 :(得分:0)

另一种方法是使用Event Aggregator进行此类通信。我们项目中正在使用Prism的事件聚合器。请检查以下thread
使用事件聚合器时要记住的事情是

  • 尽量减少使用量。这是因为使用事件聚合器的事件订阅可能难以调试。所以在同一个班级中使用普通事件。
  • 以描述事件的方式使用事件聚合器命名事件。例如,如果单击保存按钮以保存客户,请使用事件名称,例如BeforeCustomerSave \ CustomerSaved而不是SaveButtonClicked。