c# - 在不同窗口中单击按钮时调用函数(WPF 应用程序)

标签 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();
        }
    }
}

所以我希望在另一个窗口中按下 button1 时调用 DoStuff()。我应该怎么做?通过在子窗口的 button1_Click 中调用 DoStuff() ?或者通过添加一个事件“button1 pressed in the other window”?

不管怎样,有人知道怎么写吗?提前致谢!

最佳答案

一种解决方案是在构造函数中将父窗口赋予子窗口,然后它可以调用其父方法:

private void button_Click(object sender, RoutedEventArgs e)
{
    Choice win2 = new Choice(this);
    win2.Show();
}


public partial class Choice : Window
{
    Prepare parent;

    public Choice(Prepare parent)
    {
        this.parent = parent;
    }

    private void button1_Click(object sender, RoutedEventArgs e)
    {
        parent.DoStuff();
        this.Close();
    }
}

关于c# - 在不同窗口中单击按钮时调用函数(WPF 应用程序),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32091021/

相关文章:

c# - WCF WebInvoke JSON 反序列化失败 - 400 错误请求

c# - 将 JSON 对象反序列化为 C# 对象时整数列表的反序列化问题

c# - ScrollViewer 忽略 ContentTemplateSelector

c# - 关闭选项卡后如何从 DockManager 中删除 LogicalChildren?

c# - 在 XBAP 应用程序中包含外部文件

c# - WPF Datagrid RowHeaderTemplate 被 RowHeaderStyle 覆盖

c# - 在 MS 图表中添加注释(例如 (10, 20) (20, 39) 等)和水平滚动条

c# - 如何将另一个项目(get,post)api方法引入swagger api项目?

c# - 如何将 DropDownList 与列表的选择结果绑定(bind)

c# - wpf 绑定(bind)到客户端不显示名称