使用传统的{Binding}语法时,您可以指定元素名称以指向页面上的特定控件,并能够访问其属性.例如,如果页面已命名page您可以执行以下操作:
{Binding ElementName=Page, Path=Name}
Run Code Online (Sandbox Code Playgroud)
用{x:Bind}语法表示
使用x:Bind,您不需要使用ElementName = xxx作为绑定表达式的一部分.使用x:Bind,您可以使用元素的名称作为绑定路径的第一部分,因为命名元素成为页面或用户控件中表示根绑定源的字段.
因此,对于{x:Bind}中的上述示例,将是
{x:Bind page.Name}
Run Code Online (Sandbox Code Playgroud)
哪个工作正常,直到它在数据模板内(例如ListView的ItemTemplate).在这种情况下,它不再工作,因为它正在寻找Page指定的数据类型,这导致以下错误(假设我的数据类型是customer):
XamlCompiler错误WMC1110:无效的绑定路径'Page.Name':在'Customer'类型上找不到属性'Page'
将{x:Bind}语法与数据模板和数据模板外部的访问控制一起使用的解决方案是什么?