对于同一个用户界面来说,绑定到同一个源对象上是很常见的事情。因此WPF指定了一个隐式的数据源属性,而不是显示的用Binding标记每一个控件的Source, RelativeSource或者ElementName属性,这种数据源就是数据上下文。
通常的做法是找一个常见的父类控件(属于FrameworkElement或者FrameworkContentElement类型),并设置它的DataContext属性为这个源对象,当一个绑定没有显示的源对象时,WPF会遍历整个逻辑树,直到找到一个非空的DataContext属性为止。例如:
<StackPanel x:Name="parent" DataContext="{StaticResource photos}" >
<Label x:Name="label1" Content="{Binding Path=Count}" />
...
<ListBox x:Name="pictureBox" DisplayMemberPath="Name" ItemSouce="{Binding}"/>
</StackPanel>