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
UserControl
和MainWindow
中的Navigation
实例不同。UserControl
为自己的实例激发事件。同时,MainWindow
从其自己的实例侦听事件。
使用Navigation
的单个实例,或者在UserControl
中创建一个代理事件并在MainWindow
中订阅它。
此外,您不需要申报您的EventHandler
。它已经声明了。