【问题标题】:Raise a event in the UserControl and listening on it in the mainwindow在 UserControl 中引发一个事件并在主窗口中监听它
【发布时间】:2012-08-03 19:26:07
【问题描述】:

我有一个 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 中以一种很好的方式解决这个问题?

【问题讨论】:

  • 完全一样,除了internal 声明可能也应该是public,并且您应该考虑使用EventHandler<TEventArgs> 而不是您自己的事件处理程序类型。你的问题在哪里?
  • @Clemens 我没问题,我只是想问问有没有其他方法。

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


【解决方案1】:

在我看来,最好使用EventHandler 而不是您自己的委托类型。

另外,如果该类是公共的并且有一个公共构造函数,您可以将MyEvent 设为公共。

public event EventHandler<MyEventArgs> MyEvent;

【讨论】:

    猜你喜欢
    • 2013-10-20
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 2015-04-27
    • 1970-01-01
    • 2018-01-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多