我有时会在代码(c#\ vb.net)中找到我需要做的一些示例XAML。
我认为在某些时候XAML变成了代码,或者至少是IL。
所以我的问题:
假设XAML转换为IL,我是否正确? (或者如果不是IL会变成什么样?)
如果以上是正确的,XAML何时变为IL(或其变为什么)?
是否有某种方法可以将XAML视为“代码”
感谢。
答案 0 :(得分:3)
不,XAML不会编译成IL,而是在运行时完成。考虑它的最佳方式是从组件组成应用程序。
对于大多数事情,你可以在C#中复制你在XAML中所做的事情,但是XAML中有少量可用的东西不在C#中,反之亦然。 Charles Petzold在某些方面表示,表面上看,XAML看起来像XML,但事实并非如此,它本身就是一种语言。
例如这个XAML代码:
<Grid>
<TextBlock Text="Something" />
</Grid>
等同于以下C#代码。这将在运行时在C#中完成,而不是在特定组件的构造函数中设置断点,您无法确定在运行时执行的操作。
var grid = new Grid();
grid.Children.Add(new TextBlock{Text = "Something"});
我确信您的问题有解决方案,但不能解决这个问题。您能否提供有关您问题的更多详细信息,我们可以帮助您了解它。
答案 1 :(得分:1)
WPF和Silverlight以不同方式对待XAML;既不将XAML转换为IL。 WPF的标记编译器将XAML转换为名为BAML的编译形式,该形式是XAML的二进制版本。 Silverlight将XAML保留为纯文本(在.XAP中压缩)并在运行时解析它。
答案 2 :(得分:-1)
有没有办法看到XAML 作为“代码”
如果您正在讨论xaml中控件的层次结构,那么您可以使用myControl.Parent。 您可以“在代码中查看”xaml中的控件是如何嵌套的。您还将获得/设置其属性。