Событие OnExit приложения WPF
У меня есть приложение WPF с главным окном.
В App.xaml.cs, в событии OnExit, я хотел бы использовать метод из моего кода MainWindow позади...
public partial class App
{
private MainWindow _mainWindow;
protected override void OnStartup(StartupEventArgs e)
{
_mainWindow = new MainWindow();
_mainWindow.Show();
}
protected override void OnExit(ExitEventArgs e)
{
_mainWindow.DoSomething();
}
}
Метод:
public void DoSomething()
{
myController.Function(
(sender, e) =>
{
},
(sender, e) =>
{
}
);
}
Но я поставил точку останова на "_mainWindow.DoSomething();" и когда я нажимаю f11, он не входит в функцию, и функция ничего не делает... Я что-то упустил?
Я начинающий, можно ли делать то, что мне нужно?
РЕДАКТИРОВАТЬ: сообщение отредактировано
3 ответа
Решение
Вы объявили свое _mainWindow как класс Window. Класс Window не имеет функции DoSomething. Измените класс _mainWindow на MainWindow, и он должен работать.
public partial class App
{
private MainWindow _mainWindow;
...
}
Класс Window не имеет члена DoSomething, а класс MainWindow (происходит от Window).
Либо изменить
private Window _mainWindow;
в
private MainWindow _mainWindow;
или приведите свой вызов метода, как это
((MainWindow)_mainWindow).DoSomething();
Ваш app.cs должен выглядеть
public partial class App : Application
{
private MainWindow _mainwindow;
public MainWindow mainwindow
{
get { return _mainwindow??(_mainwindow=new MainWindow()); }
set { _mainwindow = value; }
}
protected override void OnStartup(StartupEventArgs e)
{
_mainwindow.Show();
}
protected override void OnExit(ExitEventArgs e)
{
_mainwindow.DoSomething();
}
}