- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
好吧,我必须承认,有时 XAML 对我来说还是有点神秘。问题是,我总是喜欢调试 C# 代码(在其中设置很多断点)以了解“正在发生什么”和“它是如何发生的”。但是对于声明性 XAML 语法,这不是一种选择。我想您会同意,要使用 XAML,或者更准确地说,要使用/理解一些现有的 XAML 代码,您必须“已经知道”XAML 声明是如何工作的。您根本无法通过调查应用程序代码的执行来了解/学习东西。因此,我非常有兴趣尽可能详细地彻底了解 XAML。我不是在谈论“学习”XAML,我知道基本的东西。也许我可以提供一些例子来阐明我正在寻找的东西 -
<DataTemplate DataType="{x:Type viewmodels:AccountsViewModel}"><br/>
<views:Accounts/><br/>
</DataTemplate>
因此,如果您是 XAML 方面的好手/经验丰富/专家,您会推荐什么(链接、文章、博文、书籍等)作为引用,以帮助更清楚、更深入地了解 XAML 的“幕后”工作原理?提前致谢。
最佳答案
大多数可以解释为不要将 XAML 视为一种真正的编程语言,更像是一种声明性语言。你在 xaml 中所做的一切,也可以在 C# 中完成,事实上这就是正在发生的事情。
Compared to C# code how an object gets instantiated when we use them in XMAL? Are they stored in managed heap? Same way as C# code-instantiated objects?
是的,因为它们只是 C# 对象。大多数资源都以休眠状态存储,我记得某处膨胀这个词。转换器或其他“直接”c# 对象在需要时创建。这里重要的是这些资源通常是共享的,因此它们只会被创建一次。
How the properties get set while using Mark-Up Extension syntax for Data/Command Binding?
这又取决于您在哪里使用标记扩展。在风格?在模板中?在像窗口这样的实例化用户控件中?通常在您真正需要它们时对它们进行评估。当膨胀的样式存储在实际资源字典中时,评估它们是没有意义的。当您实际在对象上使用样式时,它们会被评估。
When any property of an INotifyPropertyChanged type gets updated, how the Binding instatnce inside the XAML syntax updates the itself? How exactly it gets notified it at the first place, & by whom?
由绑定(bind)引擎。 WPF 检查您的 DataContext 是否继承了 INotifyPropertyChanged 接口(interface),附加到接口(interface)提供的事件并监听任何更改。如果引发此类事件,绑定(bind)引擎将再次调用 getter。
How does it happen actually? What are the rules for setting DataContext other than searching for the DataContext property upward the logical tree?
简而言之:没有其他。 Datacontext 只是一个继承的附加属性。如果您不在子控件上重新设置它,它将采用父控件的值,直到它到达根。唯一的异常(exception)是 ContentControls
和 ContentPresenter
它们不会继承 DataContext 但会根据内容更改它们。因此,这些控件始终默认将 Content 作为其 DataContext。
How the whole template things (DataTemplate, ControlTemplate & ItemsPanelTemplate) are treated/resolved at run time.
简单地说:每次 WPF 找到一个非 ui 对象时,它都会尝试为给定类型找到一个 DataTemplate。例如,在 ItemsControl 中:您可以绑定(bind) MyClass
列表;除非您提供明确的 DataTemplate 或 DataTemplateSelector,否则它将向上搜索资源树以寻找隐式样式。再次记住,这已经不会发生在 XAML 中,而是发生在从 xaml 生成的 C# 对象上。
And is it by any means possible (at present or near future) to debug through XAML code?
您认为如何调试未执行但在编译时评估的内容?
请不要认为这是 100% 正确的。多年来,这是我收集的有关 XAML 及其用法的信息。如果您有任何更正或发现明显错误的地方。请告诉我,我们都是来学习的,我总是能从我使用的东西中学到新东西 :)
关于c# - XAML:引擎盖下,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11792376/
我想创建一个包含一堆其他 XAML 文件的主 XAML 文件。这可能吗? 最佳答案 在您的主 Xaml 中,使用 项目控件 balise 和 Xaml 组合器,您必须使用 定义您的项目用户控件 代替
如何在 xaml 中更改 ToggleSwitch 中实际开关的大小?我可以更改 OnContent 和 OffContent 的文本大小,但滑动开关永远不会更改大小。 这些都不会改变开关本身的大小,
我有一个文本 block 列表,其中可能包括里面的 url,比如: 构建失败,请在此处查看更多信息:http://... 构建成功 应用 http://myapp/无法启动,请在此处查看更多信息:ht
我想做的事 我最近一直在探索 XAML 资源字典。它们非常强大,但为了减少(甚至进一步)为适应任何修改而需要进行的更改,我想使用一些基本的算术运算来更改 HeightRequest Entry 的属性
我使用以下代码创建了一个弹出窗口,但我不知道如何将它居中 我试图在运行时自动更改边距,但我不知道该怎么做,但是有人知道如何将弹出窗口居中吗? 它没有标准维度,因为我需要全局化我的程序
哪种类型的命名更适合在 XAML 中使用: xmlns:inventoryControls="clr-namespace:Inventory.Components.Controls;assembly=
我正在尝试格式化我的 string每 3 位有逗号,如果不是整数,则为小数。我检查了大约 20 个示例,这是我最接近的示例: 但我得到一个 The property 'StringFormat' w
在 Windows Phone 8 中,我想将一个图像放在一个圆圈中。是否有类似网格的圆形容器?我知道有椭圆位它不是容器 最佳答案 这是我如何做到的。
有没有办法在 XAML 中检查逻辑非逻辑。我试图绑定(bind)到广泛使用的属性,但是对于这些新的绑定(bind),它的方式是错误的。我不想修改属性,那么有没有办法在 xaml 中反转 bool 结果
在 html 中可以说 width="20%"。这在 XAML 中当然是不允许的。有谁知道为什么会这样或者有没有办法在 XAML 中获得百分比值支持? 最佳答案 网格列定义和行定义允许比例单位(除了固
我可以动态创建 XAML 并将其弹出到我的应用程序中吗?该怎么做呢? 最佳答案 是的,这很简单: XmlReader tXml = XmlReader.Create(myXamlString); UI
简短版: 如果不使用 xamlc 预编译 xaml,应用程序中捆绑了什么以在运行时编译 xaml?它是否取决于 xamarin.forms nugets 之外的应用构建时的当前工具集? 长版: 我们有
我知道如何显示内容页面,但如何根据方向选择正确的布局。我想编写 xaml 文件:一个用于垂直方向,另一个用于水平方向。方向改变时是否可以切换xaml文件 最佳答案 Xamarin.Forms does
我是一名 Android 开发者,我是 Windows Phone 8 的新手 最近我做了一个 android 应用程序..所以我想在 Windows Phone 8 中开发具有相同 View 和相同
在库中编译 XAML 时出现以下错误: Themes\Generic.xaml(35,12): XamlCompiler error WMC0610: XBF generation error cod
我需要在几个不同的 XAML 布局文件中包含一个通用的 XAML。 我不想在其他 XAML 文件中对重复的 XAML 部分进行硬编码。 怎么做包含? 最佳答案 你能把共享代码变成UserControl
我想像这样添加一个符号: 这行不通,所以我尝试用\分隔,但也行不通。有人对我如何做到这一点有任何建议吗? 最佳答案 其实这个问题不是关于XAML的,它只是一个纯XML的问题。 XML中有些字符需要转
我在 Xaml 中定义了这样的列表。 #3599B8 #374649 #FD625E #F2C80F
在向 Microsoft 报告之前,我想在这里问一下。我有一个问题,我无法看到我的 WinUI 3 应用程序的实时可视化树。我什至看不到应用程序内工具栏。我可以在 WPF 和 UWP 应用程序中看到,
我已经定义了一个动画作为一个资源,当通过这样的 EventTrigger 调用时它可以工作: 然后
我是一名优秀的程序员,十分优秀!