wpf – 为什么DataContext和ItemsSource不是冗余的?

在WPF数据绑定中,我理解你有DataContext告诉一个元素它要绑定什么数据和ItemsSource,“绑定”。

但是例如。在这个简单的例子中,似乎ItemsSource没有做任何有用的,因为,除了绑定到其他什么你想要的元素做DataContext?

<ListBox DataContext="{StaticResource customers}" 
         ItemsSource="{Binding}">

在ItemsSource的更复杂的例子中,你有Path和Source,似乎被侵占在DataContext的领域。

ItemsSource="{Binding Path=TheImages, Source={StaticResource ImageFactoryDS}}"

什么是理解这两个概念的最好方法,知道何时以及如何在各种编码情况下应用它们中的每一个?

DataContext只是一种方便的方法来为未指定显式源的情况下的绑定选择上下文。它是继承的,这使得它可以做到这一点:

<StackPanel DataContext="{StaticResource Data}">
    <ListBox ItemsSource="{Binding Customers}"/>
    <ListBox ItemsSource="{Binding Orders}"/>
</StackPanel>

这里,客户和订单是称为“数据”的资源的集合。在你的情况下,你可以这样做:

<ListBox ItemsSource="{Binding Source={StaticResource customers}}"/>

因为没有其他控件需要上下文集。

http://stackoverflow.com/questions/793340/why-are-datacontext-and-itemssource-not-redundant

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:wpf – 为什么DataContext和ItemsSource不是冗余的?