В настоящее время у меня есть этот метод в моем проекте 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). Все остальные методы/классы создаются из моей библиотеки, поэтому у меня не возникнет проблем со ссылками на них.
Извините за отсутствие ясности. Я хочу создать его в своей библиотеке, а не в методе OnStartup.
Так почему у метода есть параметр (the mainwindow of this project), что он означает?
Это было просто, чтобы попытаться сделать мою мысль более ясной. я исправил свой пост
Извините, я до сих пор понятия не имею, чего вы на самом деле пытаетесь достичь.
Добро пожаловать в StackOverflow! Пожалуйста, задавайте вопрос более конкретно: Что вы пробовали до сих пор с примером кода? (Я проголосовал против, потому что нет кода) / Что вы ожидаете? / Какая у вас ошибка?Для справки взгляните на "Как спросить"
Если ни один из приведенных выше примеров не относится к вашему вопросу, возможно, вопрос не относится к stackoverflow, см. центр помощи и тур.
@Kilazur Извините, я отредактировал свой пост, надеясь, что он станет яснее.
Где будет главное окно? Это по-прежнему должно быть главным окном в вашем вызывающем проекте, или оно настраивается, или находится в вашей библиотеке... или что? А также. NetworkErrorView. Это должно быть в вашей библиотеке управления, в которой находится ваш новый общий метод. Тот, который сэкономит вам вставку 16 строк кода для каждого решения.
@Andy, главное окно будет в вызывающем проекте, а NetworkErrorView уже в моей библиотеке.





Как я вижу, вы пытаетесь «запустить» главное окно из другой функции. Это работает для всех «Windows», сначала создавая их экземпляры, а затем показывая их.
Mainwindow mw = new Mainwindow();
mw.show();
Хотя эта команда может ответить на вопрос, предоставление дополнительного контекста относительно того, почему и/или как этот код отвечает на вопрос, повышает его долгосрочную ценность. Как ответить
Если вы хотите, чтобы он был универсальным, сделайте это так:
private void ApplicationStart<TWindow>() where TWindow : Window, new()
{
...
Application.Current.MainWindow = new TWindow();
...
}
Непонятно, о чем вы спрашиваете. Должно ли окно создаваться в библиотеке или в коде запуска? в OnStartup вы говорите, что у вас уже есть главное окно (
the mainwindow of this project), так что же должен делать этот метод?