我目前在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
)。所有其他方法/类都是从我的库中创建的,因此引用它们不会有问题。
答案 0 :(得分:1)
正如我所看到的,您正在尝试从另一个功能“启动”主窗口。首先,为所有“ Windows”创建一个实例,然后再显示它们,这对所有Windows都适用。
Mainwindow mw = new Mainwindow();
mw.show();
答案 1 :(得分:1)
如果您希望它是通用的,则可以这样做:
private void ApplicationStart<TWindow>() where TWindow : Window, new()
{
...
Application.Current.MainWindow = new TWindow();
...
}