Alw*_*wyn 2 silverlight wpf xaml windows-runtime
我只是在学习XAML,所以请耐心等待.
在XAML中嵌套元素时,似乎该元素设置为父UI的"Child"属性.
但是,在以下代码中,子元素被设置为值.那种有道理 - 有点儿.
然而,下面的Border Element设置为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-->
Run Code Online (Sandbox Code Playgroud)
另外,XAML编译器如何理解子元素实际执行的操作?即,它如何知道子元素应该被设置为"Child"属性,而有时它被设置为"Value"属性,如上所示.
XAML解析器使用它ContentPropertyAttribute
来确定如何处理子xaml元素.例如,如果您查看以下两个基本控件,您将看到它们的用法:
[ContentPropertyAttribute("Content")]
public class ContentControl : Control, IAddChild { ... }
Run Code Online (Sandbox Code Playgroud)
[ContentPropertyAttribute("Items")]
public class ItemsControl : Control, IAddChild, IContainItemStorage { ... }
Run Code Online (Sandbox Code Playgroud)
过去你会实现IAddChild
接口,但现在已经过时了.此外,xaml解析引擎可以识别您的"content"属性是指向单个对象还是对象集合.基本上,如果要创建自己的自定义控件,请确保使用正确的属性来控制子(j)的处理方式.
归档时间: |
|
查看次数: |
2043 次 |
最近记录: |