我已阅读了很多文章来解决这个问题,但我无法解决这个问题。
情况: 我有一个WPF MainWindow,我在其中加载UserControls。 Mainwindow应该在名为Navigation的类中监听EventHandler。 UserControls中的某些更改将触发事件。
到目前为止,我可以确认UserControls可以触发事件,但是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();
}
}
MainWindow:
private void DoSomething()
{
MessageBox.Show("It worked!");
}
private Navigation _Thrower;
public MainWindow()
{
InitializeComponent();
_Thrower = new Navigation();
_Thrower.ThrowEvent += (sender, args) => { DoSomething(); };
}
然而,_Thrower永远不会选择被解雇的事件。
非常感谢任何帮助!这开始受到伤害:)
问候,汤姆
答案 0 :(得分:1)
Navigation
和UserControl
中的 MainWindow
个实例不同。
UserControl
为自己的实例触发事件。同时,MainWindow
会从其自己的实例中侦听事件。
使用Navigation
的单个实例,或在UserControl
中创建代理事件并在MainWindow
中订阅。
此外,您无需声明EventHandler
。它已经declared。