Es kann nicht brauchen, um spezifisch die Datacontext gesetzt, wenn die Kontakte in einer Listenansicht oder etwas gezeigt werden ähnlich lesen.
Wenn der Datacontext der ListView auf die Contacts-Eigenschaft des MainViewModel festgelegt ist, wird der Datenkontext jedes Elements automatisch auf das spezifische ContactViewModel-Objekt festgelegt, wodurch die Elemente mithilfe eines ContactView-Steuerelements ausgelöst werden können Vorlagenbindungen wurden früher im Dokument eingerichtet.
Entschuldigung, ich hatte Probleme mit Codeplex und habe gerade erst das Dokument zum Download bekommen. Der Code-Block unmittelbar vor dem Diagramm meinen Verdacht bestätigt:
<Grid>
<ListBox ItemsSource="{Binding Contacts}">
<ListBox.ItemTemplate>
<DataTemplate>
<views:ContactView />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
Da die List-Box, die die Kontakte gebunden ist ObservableCollection jeder ListItem seine Datacontext auf das spezifische Objekt festgelegt hat, dass es gebunden ist. Das DataTemplate ist so eingerichtet, dass jedes Element als ContactView-Steuerelement angezeigt wird. Daher wird der DataContext von ContactView auf das richtige Kontaktobjekt aus der Sammlung gesetzt. All dies geschieht im Hintergrund, ohne dass Sie die Eigenschaft selbst festlegen müssen.