WPF绑定语法

5

何时在路径中使用“/”符号? 我原以为只有在处理XML时才使用“/”,但今天看到了一个例子:

class ViewModel
{
    CollectionView Data {get;set;}
}

class BusinessObkect
{
    string Name {get;set;}
}

窗口的DataContext属性设置为ViewModel类的一个实例,ViewModel实例的Data属性初始化为BusinessObject对象的集合。

如果TextBox实例的Text属性为{Binding Path=Data/Name},则一切正常,但如果Text = {Binding Path=Data.Name},则会出现绑定错误。

在绑定路径中何时必须使用“/”而不是“.”?

2个回答

13

为什么不问文档

可以通过类似于C#中使用的语法指定属性的子属性。例如,子句Path=ShoppingCart.Order将绑定到对象或属性ShoppingCart的子属性Order。

当源是集合视图时,可以使用斜杠(/)指定当前项。例如,子句Path=/将绑定到视图中的当前项。当源是集合时,此语法指定默认集合视图的当前项。

(方便起见添加了集合视图链接)

这就是最简洁和完整的解释。使用 . 符号将集合与其项目的属性连接起来甚至没有意义。例如:Collection.DateCollection/Date(除非集合本身实际上有一个Date属性)。


4

Data是一个集合时,您需要使用它。 /获取Data集合的当前元素,并返回其Name属性。


“[a] collection”的“current element”是什么意思?我熟悉的所有集合类型本身都没有当前项的概念。 - Ed S.
在这种情况下,他单独使用了 CollectionView,它已经具备了这个功能。如果您使用 ObservableCollection<T>(或类似的集合),WPF 引擎会将其包装成 CollectionView,以提供必要的基础设施。 - Femaref

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接