WPF 中并没有发生什么神奇的事情。所有发生的事情都写在某个地方。生成部分代码的是 VS。
xaml 代码与一个类相关联。
<Window x:Class="YourNameSpace.MainWindow" ...
VS 为您生成一个 MainWindow.cs 文件,该文件有一个名为 MainWindow 的 Window 类型的类。类型在这里很重要。如果您使用其他类型,即使它是正确的类名,编译器也不会将其链接到您的 MainWindow.xaml。
最终,对于 UserControl,您将拥有 xaml 标记 <UserControl 而不是 Window 标记。
还有一点,编译器还在编译时在obj 文件夹中生成一个名为MainWindow.g.cs 的文件,您还可以在其中找到MainWindow.baml xaml 文件的编译版本。
此文件将包含一个分部类 MainWindow,其中包含您在 XAML 中声明的所有控件。这是编译器执行的一项幕后工作,与 XAML 和相关类之间的关联无关。
应用程序是相同的,只是类类型发生了变化。这是为了将 XAML 与类链接。
对于启动窗口,它在 XAML 文件中默认指定为一个类。但是,您可以自定义 .cs 文件并在 ApplicationStartUp 事件中执行自己的逻辑。
对于 Shutdown 事件也是如此。默认情况下,它是关闭所有窗口的时间,但您可以将其更改为关闭 MainWindow 或显式关闭的时间。
csproj(在 c# 的情况下)告诉编译器哪个类是应用程序。
<ApplicationDefinition Include="App.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</ApplicationDefinition>
不仅像其他人所说的 XAML 标记。标签只定义了类的类型,不会让你的程序以这个特定的类开始。
(来源:microsoft.com)
您可以在此处进一步阅读:
MSDN - Building WPF application
MSDN - Code-Behind and XAML in WPF
MSDN - Application Management Overview