Vous pouvez utiliser un ContentControl
pour héberger quel que soit votre contenu et définir le ContentControl.ContentTemplate
en fonction de la manière dont vous souhaitez dessiner votre contenu.
Comme exemple très basique,
<ContentControl x:Name="MyContentControl">
<ContentControl.Style>
<Style TargetType="{x:Type ContentControl}">
<Style.Triggers>
<DataTrigger Binding="{Binding }" Value="Home">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<local:MyHomeUsercontrol />
</DataTemplate>
</Setter.Value>
</Setter>
</DataTrigger>
<DataTrigger Binding="{Binding }" Value="Players">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<local:MyPlayersUsercontrol />
</DataTemplate>
</Setter.Value>
</Setter>
</DataTrigger>
<DataTrigger Binding="{Binding }" Value="Team">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<local:MyTeamUsercontrol />
</DataTemplate>
</Setter.Value>
</Setter>
</DataTrigger>
</Style>
</ContentControl.Style>
</ContentControl>
Et MenuItem.Click
MyContentControl.Content = "Home"; // or "Players" or "Team"
Dans cet exemple, je suis sur un string
pour la ContentControl.Content
, si vous deviez utiliser un objet de classe telle comme HomeViewModel
ou PlayersViewModel
, votre XAML pourrait être simplifiée pour utiliser des modèles de données implicites, qui sont des modèles qui Habituez automatiquement chaque fois que WPF tente d'établir une classe spécifique
<Window.Resources>
<DataTemplate DataType="{x:Type HomeViewModel}">
<local:MyHomeUserControl />
</DataTemplate>
<DataTemplate DataType="{x:Type PlayersViewModel}">
<local:MyPlayersUserControl />
</DataTemplate>
<DataTemplate DataType="{x:Type TeamViewmModel}">
<local:MyTeamUserControl />
</DataTemplate>
</Window.Resources>
<ContentControl x:Name="MyContentControl" />
et
MyContentControl.Content = new HomeViewModel();
Ainsi donc au point onglet I définir modèle? – Flipper
Correct, dans votre élément de l'onglet où vous allez mettre votre contenu pour l'en-tête et vous pouvez également utiliser TabHeaderTemplate pour styler votre en-tête si nécessaire. – Steoates
@Flipper voir le code mis à jour, il pourrait faire sens de cette façon – Steoates