C#WPF如何创建可以创建特定窗口的通用方法
我目前在App.Xaml.Cs项目中使用此方法:C#WPF如何创建可以创建特定窗口的通用方法,c#,wpf,generics,types,C#,Wpf,Generics,Types,我目前在App.Xaml.Cs项目中使用此方法: private void ApplicationStart(object sender, StartupEventArgs e) { Current.ShutdownMode = ShutdownMode.OnExplicitShutdown; var NetworkConnectionView = new NetworkConnectionView(); NetworkC
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
)。所有其他方法/类都是从我的库中创建的,因此引用它们不会有问题。在我看来,您正试图从另一个函数“启动”主窗口。这适用于所有“窗口”,首先创建它们的实例,然后显示它们
Mainwindow mw = new Mainwindow();
mw.show();
在我看来,您正试图从另一个函数“启动”主窗口。这适用于所有“窗口”,首先创建它们的实例,然后显示它们
Mainwindow mw = new Mainwindow();
mw.show();
如果希望它是通用的,请按如下方式执行:
private void ApplicationStart<TWindow>() where TWindow : Window, new()
{
...
Application.Current.MainWindow = new TWindow();
...
}
private void ApplicationStart(),其中TWindow:Window,new()
{
...
Application.Current.MainWindow=新TWindow();
...
}
如果您希望它是通用的,请按如下方式操作:
private void ApplicationStart<TWindow>() where TWindow : Window, new()
{
...
Application.Current.MainWindow = new TWindow();
...
}
private void ApplicationStart(),其中TWindow:Window,new()
{
...
Application.Current.MainWindow=新TWindow();
...
}
不清楚你在问什么。窗口是在库中创建还是在启动代码中创建?在OnStartup中,您说您已经有了一个主窗口(此项目的主窗口
),那么该方法应该做什么呢?很抱歉,不够清晰。我想在我的库中创建它,而不是在OnStartup方法中。那么为什么该方法有一个参数(此项目的主窗口
),这意味着什么?这只是为了让我的想法更清楚。我已经更正了我的帖子对不起,我仍然不知道你到底想完成什么。不清楚你问的是什么。窗口是在库中创建还是在启动代码中创建?在OnStartup中,您说您已经有了一个主窗口(此项目的主窗口
),那么该方法应该做什么呢?很抱歉,不够清晰。我想在我的库中创建它,而不是在OnStartup方法中。那么为什么该方法有一个参数(此项目的主窗口
),这意味着什么?这只是为了让我的想法更清楚。我已经更正了我的帖子抱歉,我仍然不知道您实际要完成什么。虽然此命令可能会回答此问题,但提供有关此代码为什么和/或如何回答此问题的其他上下文将提高其长期价值。虽然此命令可以回答该问题,但提供有关此代码为什么和/或如何回答该问题的其他上下文可以提高其长期价值。