在UserControl中引发一个事件并在主窗口中监听它

时间:2012-08-03 10:55:51

标签: .net wpf events event-handling code-behind

我有一个UserControl A.

在代码隐藏文件中,我想提出一个特定事件(由我创建)。

现在我希望主窗口(包含用户控件)正在监听事件。

在WindowsForms中,我使用了这种方式:

namespace MyProgramm
{
    public partial class MyClass
    {   
        public MyClass()
        {
            InitializeComponent();
            DataContext = this;
        }

        internal event MyEventHandler MyEvent;

        private void RaiseMyEvent()
        {
            if (MyEvent!= null)
            {
                MyEvent(this, ...);
            }
        }

        public string Name { get; set; }

    }

    internal delegate void MyEventHandler (MyClass sender, ...);
}

如何在WPF中以一种很好的方式解决这个问题?

1 个答案:

答案 0 :(得分:1)

在我看来,使用EventHandler代替您自己的委托类型会更好。

此外,如果该类是公开的并且具有公共构造函数,则可以将MyEvent公开。

public event EventHandler<MyEventArgs> MyEvent;