XAML 项目文件被编译成 XAML 代码的二进制表示 - 二进制应用程序标记语言 (BAML)。然后将 BAML 代码作为资源嵌入到应用程序的最终程序集中 - exe 或 dll 文件。它涉及 XAML。但是,在应用程序运行时在 C# 代码 (!) 中创建的图形元素呢?
假设应用程序是一个空窗口:
<Window x:Class="WpfApp.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<StackPanel x:Name="WindowStackPanel">
<Button Click="CreateButtonEvent" Content="I was created at compile time" />
</StackPanel>
</Window>
此 XAML 被编译为可执行资源。
在鼠标事件中,我添加了新按钮 - 是一个图形元素,在构建应用程序期间它没有被编译成 BAML:
private void CreateButtonEvent(object sender, RoutedEventArgs e)
{
WindowStackPanel.Children.Add(new Button() { Content = "Where was I created?" });
}
在这方面,问题是:当我在应用程序运行时在 C# 代码(不是 XAML 代码)中创建图形项(按钮)时,技术上会发生什么?它是在写入由 BAML 创建的共享资源,还是在创建自己的 JIT 已经在读取的临时资源?谢谢