使用传统的 {Binding} 语法时,您可以指定元素名称以指向页面上的特定控件,并能够访问其属性。例如,如果页面被命名page
,你可以这样做:
{Binding ElementName=Page, Path=Name}
使用{x:Bind}语法它说
使用 x:Bind,您不需要使用 ElementName=xxx 作为绑定表达式的一部分。使用 x:Bind,您可以使用元素名称作为绑定路径的第一部分,因为命名元素成为页面或用户控件中代表根绑定源的字段。
因此,对于上面 {x:Bind} 中的示例,将是
{x:Bind page.Name}
工作正常,直到它位于数据模板中(例如 ListView 的 ItemTemplate)。在这种情况下,它不再工作,因为它正在寻找Page
导致以下错误的指定数据类型(假设我的数据类型是customer
):
XamlCompiler 错误 WMC1110:绑定路径“Page.Name”无效:在“客户”类型上找不到属性“页面”
将 {x:Bind} 语法与数据模板和数据模板外的访问控制一起使用的解决方案是什么?
示例代码可在此处获得(注意特定提交)