Tôi tiếp tục hiểu biết về MVVC với số code of MSDN và tôi có một câu hỏi.WPF DataTemplate và Binding
Trong tệp .xaml, chúng có danh sách các lệnh được hiển thị trên màn hình.
<Border
Grid.Column="0"
Style="{StaticResource MainBorderStyle}"
Width="170"
>
<HeaderedContentControl
Content="{Binding Path=Commands}"
ContentTemplate="{StaticResource CommandsTemplate}"
Header="Control Panel"
Style="{StaticResource MainHCCStyle}"
/>
</Border>
Từ đây, tôi hiểu rằng DataContext được đặt (không hiển thị ở đây) và nó sẽ hiển thị tập hợp lệnh. Những gì tôi không hiểu là CommandsTemplate mà bạn có thể thấy bên dưới:
<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>
Liên kết được tạo ra như thế nào? Làm thế nào mã này nói để kiểm tra tài sản Command và DisplayName từ đối tượng bên trong bộ sưu tập? Là nó từ ItemsSource? Nếu có, tôi không hiểu tại sao nó chỉ ở {Binding}. Bất cứ ai có thể giải thích cho tôi xin vui lòng làm thế nào DataTemplate ràng buộc làm việc từ một ContentTemplate?
Nếu nó liên kết trực tiếp đến DataContext nó nên được binded đến bối cảnh của Danh mục và không nguyên tố của danh sách? –
Đó là sự thật cho ItemsControl, nhưng mỗi mục ** trong ItemsControl sẽ có một phần tử của danh sách cho DataContext của nó. – Ray
Được rồi, vì vậy việc sử dụng {Binding} sẽ tìm kiếm một DataContext bên trong bộ sưu tập này đúng không? –