Я был довольно смущен относительно того, как работает следующий пример кода. Кажется, что Contentcontrol получает таблицу данных из ресурсов окна.WPF как установить datatemplates контента?
Не имеет ли contentcontrol свой собственный «contenttemplate», который должен определять, что в нем находится? Это просто поиск вверх и установка его содержимого на datatemplate, если на нем ничего не установлено?
Возможно, я смешиваю два термина, но я действительно смущен тем, почему в примере хранится дата-шаблон на уровне ресурсов окна.
Независимо от того, я пытаюсь понять, какие параметры у меня есть для установки вида для данного окна. Первоначально я собирался просто использовать contentcontrol и размещать представление внутри него, но потом я подумал, может быть, может быть причина, по которой контент-контроль выбирает страницу (из фактического класса страницы), а не вид (который расширяет пользователя контроль).
<Window.Resources>
<DataTemplate DataType="{x:Type local:HomeViewModel}">
<local:HomeView />
</DataTemplate>
<DataTemplate DataType="{x:Type local:ProductsViewModel}">
<local:ProductsView />
</DataTemplate>
</Window.Resources>
<DockPanel>
<Border DockPanel.Dock="Left" BorderBrush="Black" BorderThickness="0,0,1,0">
<ItemsControl ItemsSource="{Binding PageViewModels}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Button Content="{Binding Name}"
Command="{Binding DataContext.ChangePageCommand, RelativeSource={RelativeSource AncestorType={x:Type Window}}}"
CommandParameter="{Binding }"
Margin="2,5"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Border>
<ContentControl Content="{Binding CurrentPageViewModel}" />
</DockPanel>