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

时间:2014-08-07 09:07:33

标签: c# wpf mainwindow eventhandler

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

情况: 我有一个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永远不会选择被解雇的事件。

非常感谢任何帮助!这开始受到伤害:)

问候,汤姆

1 个答案:

答案 0 :(得分:1)

NavigationUserControl中的

MainWindow个实例不同。 UserControl为自己的实例触发事件。同时,MainWindow会从自己的实例中侦听事件。

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

此外,您无需声明EventHandler。它已经declared