WPF中 PropertyPath XAML 语法

Posted lonelyxmas

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WPF中 PropertyPath XAML 语法相关的知识,希望对你有一定的参考价值。

原文:WPF中 PropertyPath XAML 语法

PropertyPath 对象支持复杂的内联XAML语法用来设置各种各样的属性,这些属性把PropertyPath类型作为它们的值。这篇文章讨论PropertyPath用在绑定和动画中的语法。

PropertyPath用在哪里

PropertyPath是一个公共对象可以用在WPF的几个特性中。虽然公共PropertyPath用来传递属性信息,但是在不同的特性中,PropertyPath的用法是不同的。因此,在不同的特性中讲解PropertyPath的语法才是实际的。

WPF主要用PropertyPath来描述对象模型的路径,贯穿一个对象数据源的属性,并且描述目标动画的目标路径。

一些style和template属性,比如Setter.Property携带一个限定的属性名称,看起来很像一个PropertyPath。但是这并不是一个真正的PropertyPath,而是一个限定的owner.property字符串格式的用法,这种用法是WPF XAML处理器结合依赖对象的的类型转换器使用的。

PropertyPath用在对象的数据绑定中(Data Binding)

数据绑定是一个WPF特性,因此你可以把任何依赖对象属性绑定到目标值。然而,数据绑定的源不是必须是依赖属性;它可以是任何属性类型,只要这个属性类型能被应用程序数据提供器识别就可以。Property路径特别是用于ObjectDataProvider,对象数据提供器用来从公共运行时(CLR)对象和它们的属性中获取绑定源。

记住,XML数据绑定不适用PropertyPath,因为它在Binding中不用Path,而是XPath。你可以用XPath和有效的XPath语法指向数据的XML DOM。XPath也是被规定为字符串,但是不在这里讲解。

理解数据绑定中的属性路径的关键是你能把绑定定位到它的属性值,或者你可以绑定到列表或者集合属性。如果你要绑定到集合,比如绑定一个ListBox,ListBox会根据集合中项目的数量自动进行扩展。

Data Context直接对象的单个属性

<Binding Path="propertyName" .../> 

propertyName必须能解析成当前上下文(DataContext)的属性名称,用于Path。如果绑定更新源,属性必须是可读写的,并且源对象是可变的(mutable)。

Data Context直接对象的单个索引

key必须要么是字典或哈希表的具有类型索引,或者是数组的整型索引。并且,键值必须是可以直接绑定到属性的类型。例如,一个包含字符串键和字符串值的哈希表,可以用这种方式绑定到TextBox的Text。或者,如果键值指向一个集合或者子索引,你可以用这个语法绑定到集合类型的属性。此外,你需要引用一个具体的属性,通过下面的语法<Binding Path="[key].propertyName" .../>

以上是关于WPF中 PropertyPath XAML 语法的主要内容,如果未能解决你的问题,请参考以下文章

WPF中图形表示语法详解(Path之Data属性语法)

深入浅出WPF的目录

如何在 WPF 中的 Xaml 文件中添加注释?

自学WPF之XAML概念

没有 XAML 的 WPF

WPF自学入门WPF-XAML布局控件