好吧,我必须承认,有时 XAML 对我来说似乎有点神秘。问题是,我总是喜欢通过 C# 代码进行调试(在其中设置很多断点)来了解“正在发生什么”和“它是如何发生的”。但是对于声明性 XAML 语法,这不是一个选项。我想你会同意使用 XAML,或者更准确地说,使用/理解一些现有的 XAML 代码,你必须“已经知道”XAML 声明是如何工作的。您无法知道/学习调查应用程序代码执行的事情。因此,我非常有兴趣从内到外地查看 XAML,尽可能详细。我不是在谈论“学习”XAML,我知道基本的东西。也许我可以提供一些例子来澄清我的事情
- 与 C# 代码相比,当我们在 XMAL 中使用对象时如何实例化它们?它们是否存储在托管堆中?与 C# 代码实例化对象的方式相同吗?
- 使用标记扩展语法进行数据/命令绑定时如何设置属性?
- 当 INotifyPropertyChanged 类型的任何属性被更新时,XAML 语法中的 Binding 实例如何更新自身?它究竟是如何在第一时间得到通知的,以及由谁通知?
- 通过定义 Typed DataTemplate,可以在运行时将视图模型设置为视图的 DataContext,例如 -
它实际上是如何发生的?除了在逻辑树上向上搜索 DataContext 属性之外,设置 DataContext 的规则是什么?
<DataTemplate DataType="{x:Type viewmodels:AccountsViewModel}">
<views:Accounts/>
</DataTemplate> - 在运行时如何处理/解决整个模板内容(DataTemplate、ControlTemplate 和 ItemsPanelTemplate)。
- 等等等等等等
因此,如果您在 XAML 方面表现出色/经验丰富/专家,您会建议(链接、文章、博客文章、书籍等)作为参考,以帮助更清楚和更深入地了解 XAML 如何“在幕后”工作?提前致谢。