我如何在用户控件中引发事件并在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等信使发布者/订阅者模型