Событие 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();
    }
}
Другие вопросы по тегам