【发布时间】:2010-05-05 22:04:46
【问题描述】:
我有一个名为ChromeWindow(派生自Window)的XAML 对象,它的代码隐藏中有一个名为DependencyProperty 的AppChrome,它存储对关联的ApplicationChrome XAML 对象(派生自UserControl)的引用。 ApplicationChrome 的 XAML 文件有一些 x:Name'd 对象(例如 TextBlock 和 Border),我想从 ChromeWindow 的 XAML 绑定到这些对象。 ChromeWindow 的根在 XAML 中是 x:Name'd 为 rootWindow,所以我认为这些绑定之一可以工作:
{Binding ElementName=rootWindow, Path=AppChrome.CaptionTextBlock.Text, Mode=OneWay}
但这会抱怨 BindingExpression 路径错误,因此无法在 ApplicationChrome 类型的对象上找到属性“CaptionTextBlock”(AppChrome 的 XAML 中的 x:Name'd TextBlock)
所以我尝试了这个绑定:
{Binding Source=AppChrome.CaptionTextBlock, Path=Text, Mode=OneWay}
仍然没有运气,这一次再次抱怨BindingExpression 路径错误,但这次它无法在String 类型的对象上找到CaptionTextBlock 属性
【问题讨论】:
-
“解决方案”(我非常宽松地使用该术语)是为我想通过绑定路径访问的 AppChrome 中的每个 XAML 元素以及 AppChrome 的 Loaded() 方法创建一个 DP按名称将 DP 设置为适当的元素。似乎 XAML 标记应该比这更聪明,我记得这在 .Net 3.5 SP1 中运行良好
-
Aaaand,这个解决方案就这么多。绑定永远不会从其源属性接收更新通知。太棒了。
-
这在 .NET 3.5 或任何其他版本中永远不会起作用。