C # WPF Как создать универсальный метод, который может создать конкретное окно - PullRequest
0 голосов
/ 09 апреля 2019

У меня в настоящее время есть этот метод в моем проекте App.Xaml.Cs:

private void ApplicationStart(object sender, StartupEventArgs e)
{
            Current.ShutdownMode = ShutdownMode.OnExplicitShutdown;

            var NetworkConnectionView = new NetworkConnectionView();
            NetworkConnectionView.ShowDialog();

            if (NetworkConnectionView.ConnectionNetWorkServerInternetState == ConnectionStatus.NetworkConnectionSuccess)
            {
                var mainWindow = new MainWindow();
                Current.ShutdownMode = ShutdownMode.OnMainWindowClose;
                Current.MainWindow = mainWindow;
                mainWindow.Show();
            }

            else if(NetworkConnectionView.ConnectionNetWorkServerInternetState == ConnectionStatus.NetworkConnectionFail)
            {
                NetworkErrorView networkErrorWindow = new NetworkErrorView();
                networkErrorWindow.ShowDialog();
                Current.Shutdown(-1);
            }
}

Я бы хотел иметь возможность передавать все его содержимое статическим методом, содержащимся в библиотеке. Как это:

private void ApplicationStart(object sender, StartupEventArgs e)
{
    NetWorkTools.MyExternalMethod();
}

Но я не знаю, как это сделать, потому что MainWindow существует только в моем основном проекте WPF (а также Current). Все остальные методы / классы создаются из моей библиотеки, поэтому у меня не будет проблем со ссылками на них.

Ответы [ 2 ]

1 голос
/ 09 апреля 2019

Если вы хотите, чтобы оно было универсальным, сделайте это так:

private void ApplicationStart<TWindow>() where TWindow : Window, new()
{
   ...
   Application.Current.MainWindow = new TWindow();
   ...
}
1 голос
/ 09 апреля 2019

Насколько я понимаю, вы пытаетесь "запустить" главное окно из другой функции.Это работает для всех «Windows», сначала создавая их экземпляр, а затем показывая их.

Mainwindow mw = new Mainwindow();
mw.show();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...