在数据层次结构中绑定三个级别

时间:2011-12-05 23:54:36

标签: wpf xaml data-binding mvvm

我不介意感到愚蠢是件好事。

我正在尝试绑定到我的视图模型上的ObservableCollection。数据层次结构如下所示:Parent -contains list of-Child对象。没什么复杂的。

在我的Xaml树的最外层网格中,我建立了一个指向视图模型的链接:

<Grid DataContext="{StaticResource src}">

是的,在问题文本框正常工作之前,src确实引用了视图模型和二十几个绑定。我的Xaml树中没有另一个DataContext。现在我来到一个简单的文本框。我想将Textbox文本绑定到child.property。

这有效:

  <TextBlock 
     DataContext="{Binding Parent}"
     Text="{Binding Path=Child.Property}"
     Style="{StaticResource headerMajor}"
  />

这不起作用:

  <TextBlock 
     Text="{Binding Source=Parent,Path=Child.Property}"
     Style="{StaticResource headerMajor}"
  />

我认为他们有两种方式说同样的话。通常我想知道片刻,然后继续编码。但是,我读到的一些建议提到埋藏在Xaml控件中的DataContext属性可能导致很难找到错误。

请解释为什么一个有效,另一个没有。这将有助于我掌握整个约束性主题。

吉姆

1 个答案:

答案 0 :(得分:1)

Source是一个属性,它保存用作绑定源的object,它不解析为属性。因此,您的绑定正在查找字符串Child.Property上的属性路径"Parent",看到问题?