我如何在用户控件中引发事件并在mainpage中捕获它?

我有一个UserControl ,我需要通知父页面UserControl中的一个button被点击。 如何在UserControl引发一个事件并在主页上捕获它? 我尝试使用static ,许多人build议我去事件!

查看事件冒泡 – http://msdn.microsoft.com/zh-cn/library/aa719644%28vs.71%29.aspx

编辑添加一个简单的例子:(和额外的编辑,以改善格式)

用户控制

 public event EventHandler StatusUpdated; private void FunctionThatRaisesEvent() { //Null check makes sure the main page is attached to the event if (this.StatusUpdated != null) this.StatusUpdated(this, new EventArgs()); } 

主页/表格

 public void MyApp() { //USERCONTROL = your control with the StatusUpdated event this.USERCONTROL.StatusUpdated += new EventHandler(MyEventHandlerFunction_StatusUpdated); } public void MyEventHandlerFunction_StatusUpdated(object sender, EventArgs e) { //your code here } 

只需在控件中添加一个事件即可:

 public event EventHandler SomethingHappened; 

并在你想通知父母时提出:

 if(SomethingHappened != null) SomethingHappened(this, new EventArgs); 

如果你需要自定义EventArgs,请尝试EventHandler<T>而不要使用从EventArgs派生的types。

或者,如果您正在寻找更多的解耦解决scheme,您可以在这里使用诸如MVVM Light Messenger等信使发布者/订阅者模型