绑定标记扩展
更新:2007 年 11 月
使属性值遵从数据绑定值,从而在运行时创建一个中间表达式对象,并解释应用于元素的数据上下文。
XAML 属性用法
<object property="{Binding}" .../>
- 或 -
<object property="{Binding bindingPropertyName1=value,
bindingPropertyName2=value,
bindingPropertyNameN=value}" ...
/>
XAML 对象元素用法
<object>
<object.property>
<Binding/>
</object.property>
</object>
- 或 -
<object>
<object.property>
<Binding bindingPropertyName1="value"
bindingPropertyName2="value"
bindingPropertyNameN="value"
/>
</object.property>
</object>
下面列出的任何属性 (property) 在示例属性 (attribute) 语法中设置为“属性 (property)=值”对,而按照对象元素语法中的定义,则可以设置为 Binding 元素的属性 (attribute)。
XAML 值
bindingPropertyName# |
要设置的 Binding 属性的 Name。并非所有 Binding 属性都可以使用绑定扩展来设置,某些属性只能使用其他嵌套标记扩展进行设置。请参见“可以使用绑定扩展设置的绑定属性”一节。 |
value |
属性的设置值。属性值的处理最终特定于正在设置的 bindingPropertyName 的类型和逻辑。 |
可以使用绑定扩展设置的绑定属性
本主题显示的语法使用泛型 bindingPropertyName=value 的类似形式,因为 BindingBase 或 Binding 的许多读/写属性可以通过 Binding 标记扩展语法来设置。可以按任意顺序对上述属性进行设置。基本上可以使用由逗号分隔的“属性=值”对,在下面的列表中设置零个或更多属性。
上述某些属性 (property) 值需要的对象类型不支持本机类型转换,因此要求在 XAML 中将标记扩展用法进一步设置为属性 (attribute) 值。请查看每个属性 (property) 的参考中的“XAML 属性用法”一节,以确定正确的属性 (attribute) 语法。
BindsDirectlyToSource:bool 类型,可以为 true 或 false。
Converter:可以在 XAML 中设置,但是这样做将需要对象引用,如 StaticResource 标记扩展。
ConverterCulture:可设置为基于标准的标识符;请参见 ConverterCulture 参考。
ConverterParameter:如果传递一个通过引用传递的类型,则需要对象引用,如 StaticResource 标记扩展。
ElementName:与 RelativeSource、Source 互相排斥;上述每个属性都代表一种特定的绑定方法。请参见数据绑定概述。
FallbackValue:如果传递一个通过引用传递的类型,则需要对象引用,如 StaticResource 标记扩展。
Path:请参见 PropertyPath XAML 语法。
RelativeSource:与 ElementName、Source 互相排斥;上述每个属性都代表一种特定的绑定方法。请参见数据绑定概述。需要 RelativeSource MarkupExtension 用法。
Source:与 RelativeSource、ElementName 互相排斥;上述每个属性都代表一种特定的绑定方法。请参见数据绑定概述。需要对象引用,如 StaticResource 标记扩展。
以下是无法使用 Binding 标记扩展设置的 Binding 的属性。
备注
此处给定的 bindingPropertyName 占位符对应于 Binding 类的某些已声明的可设置属性 (property) 的名称,值字符串等效于这些属性 (property) 值在声明为 XAML 元素的 Binding 内设置为 XAML 属性 (attribute) 的方式。
此处不介绍数据绑定这一概念;请参见数据绑定概述了解相关概念,参见绑定声明概述了解备选语法的更多详细信息。备选语法介绍中包括如何通过大量可能的语法(例如 XAML 中的 Binding 对象元素的属性 (attribute) 的属性 (property)、Binding 的属性 (property) 元素语法或者使用 SetBinding 或 Binding 构造函数按步骤进行的绑定创建)创建等效绑定。
重要说明: |
---|
在依赖项属性 (property) 的优先级方面,绑定表达式等于本地设置的值。如果为先前已具有 Binding 表达式的属性设置了本地值,则会完全移除 Binding。有关详细信息,请参见依赖项属性值优先级。 |
说明: |
---|
MultiBinding 和 PriorityBinding 不支持 XAML 扩展语法(尽管会共享同一 BindingBase 类,该类实际上为 Binding 实现 XAML 行为)。 |
Binding 是标记扩展。当要求转义属性 (attribute) 值应为非文本值或非处理程序名称时,通常会实现标记扩展,相对于只在某些类型或属性 (property) 上放置类型转换器而言,此要求更具有全局性。XAML 中的所有标记扩展在其属性语法中使用 { 和 } 字符,这是 XAML 处理器确认标记扩展必须处理属性时所遵守的约定。有关更多信息,请参见标记扩展和 XAML。Binding 是非常规标记扩展,因此实现扩展功能的 Binding 类还会实现其他一些方法和属性。其他这些成员不是标记扩展功能所必需的。这些成员旨在令 Binding 成为功能更多且独立的类,除用作 XAML 标记扩展外,还可以解决许多数据绑定方案。