我只有几个月的XAML经验,并且经常很难确定如何绑定或引用我的XAML中不同位置定义的元素。我最近遇到了X:Reference,我理解这是XAML 2009和.NET 4的新功能。
例如,假设我尝试绑定到名为DisplayIndicator的元素的IsChecked属性,该元素在我的XAML中的其他位置定义。 X:参考允许我这样做:
{Binding Source={x:Reference DisplayIndicator}, Path=IsChecked}
这似乎是一种简单的方法(并且首选方式?)来引用我的XAML中声明的几乎任何元素。我错了吗?使用它有不利之处吗?
非常感谢。
答案 0 :(得分:4)
在WPF和XAML 2006中,元素引用由ElementName绑定的框架级功能解决。对于大多数WPF应用程序和方案,仍应使用ElementName绑定。此一般指导的例外情况可能包括存在数据上下文或其他范围考虑因素的情况,这些因素会导致数据绑定不切实际且不涉及标记编译。
如果x:Reference
不可选,我也只使用ElementName
。这里没有提及的一件事是x:Reference
相当挑剔,具有周期性的依赖性,而ElementName
并非如此;所以这将是一个缺点。
答案 1 :(得分:3)
不幸的是,您不能将XAML 2009功能与XAML一起使用,该功能用于在WPF应用程序中定义可视元素。见http://msdn.microsoft.com/en-us/library/ee792007.aspx:
在WPF中,您可以使用XAML 2009功能,但仅适用于非WPF标记编译的XAML。标记编译的XAML和BAML形式的XAML目前不支持XAML 2009语言关键字和功能。
但至于x:Reference
,还有一个简单的选择:
{Binding ElementName=DisplayIndicator, Path=IsChecked}