如何从模态窗口调用主WPF窗口的方法?

Dev*_*per 9 c# wpf

如何从模态窗口调用主WPF窗口的方法?

(事实上​​,当我关闭一些模型窗口时,我想启动MainWindow.xaml.cs的一些计时器.)

谢谢!

小智 17

您可以做的是在打开第二个窗口之前将主窗口指定为其所有者,然后从模态窗口调用Owner属性,将其转换为MainWindow对象,您将能够执行该方法.

// Code in main window
ModalWindow window = new ModalWindow();
window.Owner = this; 
window.ShowDialog()

//Code on the modal window
var myObject = this.Owner as MainWindow;
myObject.MyMethod(); // Call your method here.
Run Code Online (Sandbox Code Playgroud)


小智 5

public class ModalWindow : Window
{
    private MainWindow _parent;
    public ModalWindow(MainWindow parent)
    {
        _parent = parent;
        Owner = parent;
    }

    void CallParent()
    {
        _parent.Call();
    }
}
Run Code Online (Sandbox Code Playgroud)

我建议这种模式是代码味道.

如果您的目标是将信息从模态传递到父模式,最好在模态窗口上公开属性,并在关闭后读取这些值并执行父项中所需的任何操作.

如果您的目标是将信息从父级传递给模态,则在调用之前将其传递给构造函数或公共属性 ShowDialog().