1. 附加属性(Attached Properties)
- 概念与特性:附加属性是一种特定类型的属性,其属性值受到 XAML 专用属性系统的跟踪和影响。它的特殊之处在于在另一个类中定义,但可以应用在多个不同控件上。
- 核心用途:最常用于控件布局(如容器面板为其子元素提供的布局参数)。
- 语法格式:
定义类.属性名="值"。 - 代码示例:
<Canvas HorizontalAlignment="Left" Height="100" Margin="80,500,0,0" VerticalAlignment="Top" Width="100"> <Button Canvas.Top="4">北盟网校</Button> </Canvas>
注:Canvas.Left和Canvas.Top是定义在Canvas类中的附加属性,用于控制内部子元素(如Button)的位置。例如Canvas.Left="50"表示将按钮放置在距离 Canvas 面板左边 50 像素的位置。子控件自身并不包含这些定位属性,而是由父容器(Canvas)在布局时读取并应用。
2. 标记扩展(Markup Extensions)
- 概念:标记扩展是一个被广泛使用的 XAML 语言概念,通过特定的扩展语法(通常以
{}包裹或作为元素)来动态设定属性值,实现解耦和复用。 - 常见类型及作用:
- Binding(绑定):在 XAML 载入时,将数据源动态绑定到 XAML 对象的属性上。
- StaticResource(静态资源):引用在应用数据字典(
ResourceDictionary)中预先定义的静态资源(如样式、画刷、字符串等)。 - ThemeResource(主题资源):引用系统内置的静态资源,支持随系统主题(如深色/浅色模式)动态切换。
- TemplateBind(模板绑定):在控件模板(ControlTemplate)内部使用,将模板内元素的属性绑定到控件自身的属性上。
- RelativeSource(绑定关联源):实现相对绑定,用于绑定到特定层级的数据源(如自身、父级、祖先元素或模板父级)。
Previous: XAML的对象元素2
Next: XAML的事件与编译原理