【问题标题】:Call function from another window从另一个窗口调用函数
【发布时间】:2014-09-28 14:29:24
【问题描述】:

我在从另一个窗口调用一个 MainWindow 函数时遇到问题。

我有 4 个窗口:MainWindow、Window1、Window2 和 Window3。 MainWindow 打开 Window1,Window1 打开 window2,Window2 打开 Window3。我想从 Window1 和 Window3 调用 MainWindow 函数。我可以从 Window1 调用此函数,但我不知道如何从 Window3 执行此操作。

代码:从Window1调用MainWindow函数:

主窗口:

private void button2_Click(object sender, RoutedEventArgs e)
{
     Window1 w1 = new Window1();
     w1.Owner = this;
     w1.ShowDialog();
}

窗口1:

public void button_cancel_Click(object sender, RoutedEventArgs e)
{         
    var myObject = this.Owner as MainWindow;
    myObject.ruLanguage();
}

ruLanguage(); - 从 MainWindow 调用的函数

【问题讨论】:

  • 将其作为 ctor 参数传递。

标签: c# wpf windows methods call


【解决方案1】:

在 WPF 中,您可以通过 Application.MainWindow 属性访问主窗口。

public void button_cancel_Click(object sender, RoutedEventArgs e)
{         
    var myObject = Application.MainWindow as MainWindow;
    myObject.ruLanguage();
}

您还可以在窗口上定义属性,这样您就可以像这样使用它们:

public MainWindow AppMainWindow { get; set; }

private void button2_Click(object sender, RoutedEventArgs e)
{
     Window1 w1 = new Window1();
     w1.Owner = this;
     w1.AppMainWindow = this;
     w1.ShowDialog();
}

然后传递AppMainWindow的值。

附带说明,您可能需要重新考虑您的设计。了解 MVVM 模式,这是使用 WPF 的更好方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多