Je continue ma compréhension de MVVC avec le code of MSDN et j'ai une question.WPF DataTemplate et la liaison
Dans le .xaml, ils ont une liste de commandes affichées à l'écran.
<Border
Grid.Column="0"
Style="{StaticResource MainBorderStyle}"
Width="170"
>
<HeaderedContentControl
Content="{Binding Path=Commands}"
ContentTemplate="{StaticResource CommandsTemplate}"
Header="Control Panel"
Style="{StaticResource MainHCCStyle}"
/>
</Border>
A partir de là, je comprends que le DataContext est réglé (non représenté ici) et il affichera la collection de commandes. Ce que je ne comprends pas la CommandsTemplate que vous pouvez voir ci-dessous:
<DataTemplate x:Key="CommandsTemplate">
<ItemsControl IsTabStop="False" ItemsSource="{Binding}" Margin="6,2">
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBlock Margin="2,6">pou
<Hyperlink Command="{Binding Path=Command}">
<TextBlock Text="{Binding Path=DisplayName}" />
</Hyperlink>
</TextBlock>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</DataTemplate>
Comment la liaison est créée? Comment ce code dit de vérifier la propriété Command et DisplayName de l'objet à l'intérieur de la collection? Est-ce de l'ItemsSource? Si oui, je ne comprends pas pourquoi c'est seulement {Binding}. Tout le monde peut m'expliquer comment la liaison DataTemplate fonctionne à partir d'un ContentTemplate?
Si elle se lie directement au DataContext il devrait être binded au contexte de la liste et non l'élément de la liste? –
Cela est vrai pour ItemsControl, mais chaque ** élément ** dans ItemsControl aura un élément de la liste pour son DataContext. – Ray
D'accord, l'utilisation de {Binding} va rechercher un DataContext dans cette collection, n'est-ce pas? –