问题描述
给定一些这样的 Xaml:
<headingView:headingView
x:Class="Test.Views.Decks.DeckBase.DeckMgmt.DeckMgmtPage2"
xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:headingView="clr-namespace:Test.Templates.Pages.headingView;assembly=Test"
xmlns:t="clr-namespace:Test.Templates"
BackIconVisible="True"
PageTitle="Mgmt">
<t:Stack>
<t:ContentFrame heading="Reset">
<t:LinkGrid TapCommand="{Binding ResetDeckCmd}" Text1="Reset" />
</t:ContentFrame>
<t:ContentFrame heading="Sort">
<t:LinkGrid Text1="Sort" />
</t:ContentFrame>
</t:Stack>
</headingView:headingView>
我不需要帮助将其更改为 C#,但我想知道是否有任何地方或方法可以找到创建的中间 C#?
解决方法
查看编译器生成的实际代码很棘手(我尝试了几个小时,但找不到直接查看代码的方法)-但可以查看源代码本身。
首先 - 下载 .NET 反射器和适当的 Visual Studio 扩展。
https://visualstudio.microsoft.com/vs/preview/
现在我们需要找到我们想要反编译的方法。
方法 Xamarin.Forms.Xaml.Extensions.LoadFromXaml()
位于您页面的 xaml.g.cs
文件中。根据微软的说法:
当 Visual Studio 生成包含 XAML 文件的项目时,它 [方法] 解析 XAML 文件以生成包含定义的 C# 代码文件(例如 MainPage.xaml.g.cs) InitializeComponent 方法:
本例中的方法是 LoadFromXaml()
方法。
现在添加一个断点,如下所示:
按 F12
直到出现以下内容:
您将看到如下内容:
从这里 - 您可以浏览 XamlLoader
类的其余源代码:
很有趣,不是吗?这是我得到的最接近解决方案的方法。
我只是将其作为图像共享,因为我认为将完整代码作为代码片段共享是不合适的。
这并不完全是您要找的东西 - 但我仍然希望这有助于回答您的问题。