J'ai un TabControl avec ItemsSource défini sur ObservableCollection<BookTab>
et en utilisant ContentTemplateSelector pour créer différents onglets.Liaison pour les contrôles de contenu de TabItem
class BookTab
{
public string Name { get; set; }
public string Type { get; set; }
public object Data { get; set; }
}
<TabControl Name="tabControl"
ContentTemplateSelector="{StaticResource tabTemplateSelector}">
<TabControl.ItemContainerStyle>
<Style TargetType="TabItem">
<Setter Property="Header" Value="{Binding Name}"/>
<Setter Property="Content" Value="{Binding}"/>
</Style>
</TabControl.ItemContainerStyle>
</TabControl>
Tapez détermine DataTemplate utilisé onglet Carnet dans l'onglet approprié, le nom est affiché sur l'en-tête de l'onglet et données doit être affiché dans le contenu de l'onglet, à savoir DataGrid. Les données sont définies sur ObservableCollections de différents types.
DataTemplate peut ressembler à ceci:
<DataTemplate x:Key="bookTabTemplate">
<TabItem Name="bookTab">
<Grid>
<DataGrid Name="bookGrid">
...
</DataGrid>
</Grid>
</TabItem>
</DataTemplate>
J'ai essayé différentes façons de lier la propriété des données à ItemsSource de DataGrid, mais tout ce que je suis arrivé est la grille affichant mot « livre » (la valeur de la propriété Nom de onglet Carnet). Ma conjecture est que je dois en quelque sorte propager la liaison de TabControl à DataGrid, mais je ne peux pas le comprendre.