WPF 中并没有发生什么神奇的事情。所有发生的事情都写在某个地方。 VS 生成了一些代码。
xaml 代码与一个类链接。
<Window x:Class="YourNameSpace.MainWindow" ...
VS 为您生成一个 MainWindow.cs 文件,其中包含一个名为MainWindow
of Window
类型。类型在这里很重要。如果您使用其他类型,即使类名正确,编译器也不会将其链接到您的 MainWindow.xaml。
最终,对于 UserControl,您将拥有 xaml 标签<UserControl
代替Window
tag.
另一件事是,编译器还在编译时生成一个名为MainWindow.g.cs
in the obj
文件夹,您还可以在其中找到MainWindow.baml
xaml 文件的编译版本。
该文件将包含一个分部类 MainWindow,其中包含声明在 XAML 中使用的所有控件。这是编译器执行的幕后工作,与 XAML 和相关类之间的关联无关。
应用程序是相同的,只是类类型发生了变化。这是为了将 XAML 与类链接起来。
对于启动窗口,它默认在 XAML 文件中指定为一个类。但是,您可以自定义 .cs 文件并在 ApplicationStartUp 事件中执行自己的逻辑。
关闭事件也是如此。默认情况下,当所有窗口都关闭时,但您可以将其更改为当主窗口关闭或显式关闭时。
csproj(在 c# 的情况下)告诉编译器哪个类是应用程序。
<ApplicationDefinition Include="App.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</ApplicationDefinition>
不仅仅是像其他人所说的 XAML 标签。该标签仅定义类的类型,并不使您的程序从此特定类开始。
(source: microsoft.com http://i.msdn.microsoft.com/dynimg/IC144461.png)
您可以在这里进一步阅读:MSDN - 构建 WPF 应用程序 https://learn.microsoft.com/en-us/dotnet/framework/wpf/app-development/building-a-wpf-application-wpf
MSDN - WPF 中的代码隐藏和 XAML https://learn.microsoft.com/en-us/previous-versions/dotnet/netframework-4.0/aa970568(v=vs.100)
MSDN - 应用程序管理概述 https://learn.microsoft.com/en-us/previous-versions/dotnet/netframework-4.0/ms743714(v=vs.100)