新建WPF工程 - (一)
在VS开发环境安装完成之后,首先我们先新建一个WPF工程,然后对工程目录结构啥的要有所了解才行。
首先呢,打开我们新安装的VS软件,找到WPF应用

然后设置工程目录

工程建好之后,默认差不多就是下面这个样子

WPF应用程序”会在“引用”里面自动添加下图中所示的 PresentationCore、PresentationFramework、WindowsBase三大核心程序集

生成的WpfApp项目的文件结构。如下图(抄过来的。。。)

按我理解MainWindow.xaml.cs文件应该主要是处理界面相关的操作,App.xaml.cs文件主要处理后台应用处理,而系统应用相关的初始化,应该都放在App.xaml.cs文件里面
在App.xaml中的“StartupUri”属性可以指定项目运行时的启动窗体。如下图中“StartupUri=”MainWindow.xaml””,还可以定义我们需要的系统资源以及引入程序集等,如下图。(抄过来的。。。)

在学习过程中我发现其实还可以通过在Application里面添加Startup属性,来指定我们应用程序的启动入口,修改方式如下:
<Application x:Class="WpfApp.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfApp"
ShutdownMode="OnMainWindowClose"
Startup="AppStartup"><!--设置APP启动时的入口函数AppStartup-->
<Application.Resources>
</Application.Resources>
</Application>
WPF应用程序关闭模式(ShutdownMode)
在WPF开发当中, 最常见的应用程序关闭的方式就是, 除非用户手动调用给当前应用Shutdown, 那么都是在应用启动单个窗口后, 然后程序默认调用Shutdown结束应用。
而开发的过程中, 我们常用不同的情况, 例如我们希望最开始启动单个窗口后, 我们希望关闭之后, 再启用另外一个窗口, 那么WPF当中, AppDomain提供了ShutdownMode,也就是应用程序关闭的模板供用户选择。
1、OnLastWindowClose
该项为WPF中的默认项, 应用程序关闭时,或最后一个窗口关闭时关闭,或调用Application对象的Shutdown() 方法时,应用程序关闭。
如下所示, 默认创建WPF应用后, 可以看见App.xaml设定了StartupUrl
<Application x:Class="WpfApp.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfApp"
StartupUri="MainWindow.xaml">
<Application.Resources>
</Application.Resources>
</Application>
当我们应用第一次加载后, 将为当前的MainWindow 设定StartupUri的值, 当我们的窗口手动Close之后, 那么WPF就会自己隐氏调用了ShutDown结束程序。
2、OnMainWindowClose
启动窗体关闭或调用Application对象的Shutdown()方法时,应用程序关闭。(和C#的Windows应用程序的关闭模式比较类似)
3、OnExplicitShutdown
只有在调用Application对象的Shutdown()方法时,应用程序才会关闭
Startup指定入口
关于Startup的方法说明我没找到,按我个人理解,应该是重定义程序入口,将默认启动MainWindow.xaml改成App.xaml.cs文件内的某个函数,如果不在App.xaml.cs内手动启动MainWindow窗体,在运行时,窗体是不会打开的,代码如下:
using System.Windows;
namespace WpfApp
{
/// <summary>
/// App.xaml 的交互逻辑
/// </summary>
public partial class App : Application
{
MainWindow mainWindow;
void AppStartup(object sender, StartupEventArgs args)
{
System.Diagnostics.Debug.WriteLine("启动了...");
mainWindow = new MainWindow();
mainWindow.Show();
}
}
}
执行结果,就是系统会先输出一个“启动了...”的字符串,然后启动窗体。这种操作在winform里面,其实就相当于直接修改了Program.cs的Main函数(好家伙,这么麻烦...)
其实窗体的设计很多时候,都可以直接在窗体属性中直接修改,如果熟悉html的话,其实可以直接修改xaml文件的,像设置窗体背景颜色、设置ico图标、设置字体、生成发布文件什么的基本操作跟winform差不多,我也懒得讲了。。。