WPF的App.xaml启动第一个窗体的3种方式
1.使用App.xaml
的StartupUri
属性启动(推荐使用)
在App.xaml
文件中,你可以设置StartupUri
属性来指定启动时显示的第一个窗口:
XML
<Application x:Class="浅看一眼WPF.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:浅看一眼WPF"
StartupUri="MainWindow.xaml">
<Application.Resources>
<!-- 应用程序资源 -->
</Application.Resources>
</Application>
在这种情况下,当应用程序启动时,WPF会自动查找并打开MainWindow.xaml
指定的窗口。
2.在App.xaml.cs
的Startup
事件中启动(推荐使用)
XML
<Application x:Class="浅看一眼WPF.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:浅看一眼WPF"
Startup="Application_Startup">
<Application.Resources>
</Application.Resources>
</Application>
cs
public partial class App : Application
{
private void Application_Startup(object sender, StartupEventArgs e)
{
MainWindow mainWindow = new MainWindow();
//mainWindow.Show();
mainWindow.ShowDialog();
}
}
在这种方法中,当应用程序启动时,Startup
方法会被调用,然后创建并显示MainWindow
。
3.使用Application.Run
方法启动:Main入口方法,(不建议)
cs
public partial class App : Application
{
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
Application.Current.MainWindow = new MainWindow();
Application.Current.MainWindow.Show();
}
}
cs
public partial class App : Application
{
[STAThread]
public static void Main()
{
MainWindow mainWindow = new MainWindow();
mainWindow.ShowDialog();
//或者
Application app1 = new Application();
app1.StartupUri = new Uri("MainWindow.xaml", UriKind.RelativeOrAbsolute);
app1.Run();
}
}
在这种方法中,MainWindow
被设置为应用程序的MainWindow
属性,并显示它。
三种方法的优缺点:
1. 使用App.xaml的StartupUri属性启动
这是最简单和最推荐的方法。在App.xaml
中设置StartupUri
属性,指定启动时显示的第一个窗口的XAML文件。这种方法的优点是代码简洁,不需要在代码后台显式创建和显示窗口。
优点:
- 代码简洁,易于维护。
- 自动处理窗口的创建和显示。
缺点:
- 灵活性较低,不适合需要在窗口显示前进行复杂初始化的场景。
2. 在App.xaml.cs的Startup事件中启动
在App.xaml
中设置Startup
属性,指定启动事件的处理方法。在App.xaml.cs
中重写OnStartup
方法或直接在XAML中定义事件处理方法,然后在该方法中创建和显示主窗口。
优点:
- 提供了更多的控制,可以在窗口显示前进行复杂的初始化操作。
- 可以访问
StartupEventArgs
,获取启动参数。
缺点:
- 代码相对复杂,需要在代码后台显式创建和显示窗口。
- 需要正确处理窗口的显示方式(
Show
或ShowDialog
)。
3. 使用Application.Run方法启动:Main入口方法
在Main
方法中直接创建Application
实例,然后使用Run
方法启动应用程序并显示主窗口。这种方法通常不推荐,因为它可能导致资源管理问题,特别是在多线程环境中。
优点:
- 提供了最大的灵活性,可以在应用程序启动前进行复杂的初始化操作。
缺点:
- 代码复杂,需要手动管理应用程序的生命周期。
- 可能导致资源管理问题,特别是在多线程环境中。
- 不符合WPF应用程序的标准模式,可能导致不可预测的行为。
总结
- 使用App.xaml的StartupUri属性是最简单的方法,适用于大多数标准WPF应用程序。
- 在App.xaml.cs的Startup事件中启动提供了更多的控制,适用于需要在窗口显示前进行复杂初始化的场景。
- 使用Application.Run方法启动虽然提供了最大的灵活性,但通常不推荐,因为它可能导致资源管理问题。