您能否将XAML视为“常规”.net代码(c#\ vb.net)?

时间:2010-05-06 04:58:21

标签: wpf silverlight xaml

我有时会在代码(c#\ vb.net)中找到我需要做的一些示例XAML。

我认为在某些时候XAML变成了代码,或者至少是IL。

所以我的问题:

  • 假设XAML转换为IL,我是否正确? (或者如果不是IL会变成什么样?)

  • 如果以上是正确的,XAML何时变为IL(或其变为什么)?

  • 是否有某种方法可以将XAML视为“代码”

感谢。

3 个答案:

答案 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中的控件是如何嵌套的。您还将获得/设置其属性。