在其他窗口(WPF应用程序)中单击按钮时调用函数

时间:2015-08-19 09:03:47

标签: c# wpf

我从我的wpf应用程序的页面启动一个窗口,我想在子窗口中按下按钮时调用一个函数

以下是调用窗口的页面:

namespace AppWpf10
{
    public partial class Prepare : System.Windows.Controls.Page
    {
        private void button_Click(object sender, RoutedEventArgs e)
        {
            Choice win2 = new Choice();
            win2.Show();
        }

        public void DoStuff()
        {
            //CODE THAT DOES STUFF
        }
    }
}

启动窗口:

namespace appWpf10
{
    public partial class Choice : Window
    {
        private void button1_Click(object sender, RoutedEventArgs e)
        {
            this.Close();
        }
    }
}

所以我想在另一个窗口中按DoStuff()时调用button1。我该怎么办?通过从子窗口调用DoStuff()中的button1_Click?或者通过添加事件“在其他窗口中按下按钮1”?

无论哪种方式,任何人都知道如何写它?提前谢谢!

2 个答案:

答案 0 :(得分:4)

一种解决方案是在构造函数中为父窗口提供父窗口,然后它可以调用其父方法:

resize

答案 1 :(得分:2)

嗯,有很多方法,从它的外观来看,你没有去MVVM路线,这很好。因此,在您的特定情况下,一个简单的方法是在您实际创建子项时订阅子项的按钮单击事件,前提是您已命名该按钮:

namespace AppWpf10
{
    public partial class Prepare : System.Windows.Controls.Page
    {
        private void button_Click(object sender, RoutedEventArgs e)
        {
            Choice win2 = new Choice();
            win2.Show();
            win2.button1.Click += clickEventHandler;
        }

        private void clickEventHandler(object sender, RoutedEventArgs e)
        {
            DoStuff();
        }

        public void DoStuff()
        {
            //
        }
    }
}