似乎XAML文件应该在C#项目中具有相应的.cs文件.我知道Visual Studio为我们做了所有事情.我只是好奇他们是如何联系在一起的?我的意思是,它们是在项目文件中指定的,还是仅仅因为它们具有相同的名称?而且,App.xaml文件指定了启动文件,但编译器如何知道?是否可以指定App.xaml以外的其他文件来执行与App.xaml相同的操作?
WPF中没有任何神奇的事情发生.所有发生的事情都写在哪里.这是VS生成一些代码.
xaml代码与类链接.
<Window x:Class="YourNameSpace.MainWindow" ...
Run Code Online (Sandbox Code Playgroud)
VS为您生成其中有一个名为类MainWindow.cs文件MainWindow的Window类型.这种类型很重要.如果使用其他类型,编译器将不会将其链接到MainWindow.xaml,即使它是正确的类名.最终,对于UserControl,您将拥有xaml标记<UserControl而不是Window标记.
还有一件事,编译器还会在编译时生成一个MainWindow.g.cs在obj文件夹中调用的文件,您也可以在其中找到MainWindow.bamlxaml文件的编译版本.此文件将包含一个部分类MainWindow,其中声明了您在XAML中使用的所有控件.这是编译器执行的场景作业的背后,与XAML和相关类之间的关联无关.
应用程序是相同的,只是类类型更改.这是为了将XAML与类相关联.对于StartUp Window,默认情况下它在XAML文件中指定为类.但是,您可以自定义.cs文件并在ApplicationStartUp事件中执行您自己的逻辑.
Shutdown事件也是如此.默认情况下,当所有窗口都关闭时,您可以将其更改为MainWindow关闭或显式关闭时.
csproj(在c#的情况下)告诉编译器哪个类是应用程序.
<ApplicationDefinition Include="App.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</ApplicationDefinition>
Run Code Online (Sandbox Code Playgroud)
不仅像其他人所说的XAML标签.标记仅定义类的类型,不会使您的程序从此特定类开始.
应用程序概述http://i.msdn.microsoft.com/dynimg/IC144461.png
您可以在此处进一步阅读: MSDN - 构建WPF应用程序
| 归档时间: |
|
| 查看次数: |
5127 次 |
| 最近记录: |