gpt4 book ai didi

wpf - XAML 中的子元素

转载 作者:行者123 更新时间:2023-12-04 22:02:34 25 4
gpt4 key购买 nike

我刚开始学习 XAML,请多多包涵。

当您在 XAML 中嵌套一个元素时,该元素似乎被设置为父 UI 的“子”属性。

但是在下面的代码中,子元素被设置为该值。这有点道理 - 有点。

然而下面的Border元素设置为ControlTemplate,而ControlTemplate没有Child元素,请问Border和下面的ControlTemplate到底是什么关系?也许您可以用 C# 重写这个片段作为解释。

 <Setter Property="Template" >
<Setter.Value>
<ControlTemplate TargetType="dtp:PickerSelectorItem">

<Border HorizontalAlignment="Stretch" VerticalAlignment="Stretch" >

<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="Picker">
<VisualState x:Name="Focused">
<Storyboard>
<!-- There is more code but snipped for irrelevance-->

另外,XAML 编译器如何理解子元素的实际作用?即,它如何知道子元素应该设置为“Child”属性,而其他时候它会设置为“Value”属性,如上所示。

最佳答案

XAML 解析器使用 ContentPropertyAttribute确定如何处理子 xaml 元素。例如,如果您查看以下两个基本控件,您将了解它们的用法:

ContentControl :

[ContentPropertyAttribute("Content")]
public class ContentControl : Control, IAddChild { ... }

ItemsControl :

[ContentPropertyAttribute("Items")]
public class ItemsControl : Control, IAddChild, IContainItemStorage { ... }

过去,您将实现 IAddChild接口(interface),但现在已经过时了。此外,xaml 解析引擎可以识别您的“内容”属性是指向单个对象还是对象集合。基本上,如果您想创建自己的自定义控件,请确保使用正确的属性来控制您的子项的处理方式。

关于wpf - XAML 中的子元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17329676/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com