【发布时间】:2015-12-27 06:45:14
【问题描述】:
使用传统的 {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} 语法与数据模板和数据模板外的访问控制一起使用的解决方案是什么?
示例代码可用here(注意具体提交)
【问题讨论】:
标签: xaml binding windows-store-apps winrt-xaml xbind