C#WPF订阅从UserControl激发的另一个类中的事件

本文关键字:另一个 事件 UserControl C#WPF | 更新日期: 2023-09-27 18:16:49

我已经通读了很多文章来解决这个问题,但我无法解决这个问题。

情况:我有一个WPF主窗口,我正在其中加载UserControls。主窗口应该侦听名为Navigation的类中的EventHandler。UserControls中的某些更改将触发该事件。

到目前为止,我可以确认UserControls可以触发Event,但MainWindow不会拾取Throw。

导航类别:

public class Navigation
{
    public delegate void EventHandler(object sender, EventArgs args);
    public event EventHandler ThrowEvent = delegate { };
    public void NavigationUpdateEvent()
    {
        ThrowEvent(this, new EventArgs());
    }
}

用户控制:

    public delegate void EventHandler(object sender, EventArgs args);
    public event EventHandler ThrowEvent = delegate { };
    Navigation myNavigation = new Navigation();
    public myUserControl()
    {
        InitializeComponent();
    }
    private void CheckBox_Click(object sender, RoutedEventArgs e)
    {
        if (cbCheckBox.IsChecked.Value)
        { 
            UMENavigation.NavigationUpdateEvent();
        }
    }

主窗口:

    private void DoSomething()
    {
        MessageBox.Show("It worked!");
    }
    private Navigation _Thrower;

    public MainWindow()
    {
        InitializeComponent();
        _Thrower = new Navigation();
        _Thrower.ThrowEvent += (sender, args) => { DoSomething(); };
    }

但是,Thrower从不拾取激发的事件(_T(。。

非常感谢您的帮助!这开始造成伤害:(

问候,Tom

C#WPF订阅从UserControl激发的另一个类中的事件

UserControlMainWindow中的Navigation实例不同。UserControl为自己的实例激发事件。同时,MainWindow自己的实例侦听事件。

使用Navigation的单个实例,或者在UserControl中创建一个代理事件并在MainWindow中订阅它。

此外,您不需要申报您的EventHandler。它已经声明了。