Я продолжаю понимать MVVC с code of MSDN, и у меня есть вопрос.WPF DataTemplate и привязка
В .xaml у них есть список команд, отображаемых на экране.
<Border
Grid.Column="0"
Style="{StaticResource MainBorderStyle}"
Width="170"
>
<HeaderedContentControl
Content="{Binding Path=Commands}"
ContentTemplate="{StaticResource CommandsTemplate}"
Header="Control Panel"
Style="{StaticResource MainHCCStyle}"
/>
</Border>
Отсюда, я понимаю, что DataContext устанавливается (не показан), и он будет отображать коллекцию команд. То, что я не понимаю, это CommandsTemplate, что вы можете увидеть ниже:
<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>
Как связывание создается? Как этот код говорит проверить свойство Command и DisplayName из объекта внутри коллекции? Это из ItemsSource? Если да, я не понимаю, почему это только в {Binding}. Кто-нибудь может объяснить мне, как работает привязка DataTemplate из ContentTemplate?
Если он связывается непосредственно к DataContext он должен быть переплетены в контексте списка и не элемента списка? –
Это верно для ItemsControl, но каждый ** элемент ** в ItemsControl будет иметь элемент списка для своего DataContext. – Ray
Хорошо, поэтому с помощью {Binding} будет искать DataContext внутри этой коллекции? –