如何从模态窗口调用主WPF窗口的方法?
(实际上,当我关闭某个模态窗口时,我想启动MainWindow.xaml.cs的一些计时器。)
谢谢!
你可以在打开第二个窗口之前将主窗口指定为其所有者,然后从模态窗口调用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.
public class ModalWindow : Window
{
private MainWindow _parent;
public ModalWindow(MainWindow parent)
{
_parent = parent;
Owner = parent;
}
void CallParent()
{
_parent.Call();
}
}
有很多方法可以做到这一点。
您可以重载模态窗口的构造函数,以便可以传递对该函数或主窗口的引用。或者,在该窗口中添加一个属性。
您还可以在显示模态窗口的主窗口代码的下一行启动计时器。
如果此模态窗口将从MainWindow
打开,像这样:
modalWindow.ShowDialog()
只需在此调用之后添加代码,它将在模态窗口关闭后执行。
如果模态窗口是从其他地方打开的,但在关闭时应运行完全不相关的代码,则可以使用例如Commands或RelayCommand(一种直接委托调用)。
希望这可以帮到你。