У меня есть TabControl с ItemsSource, установленным на ObservableCollection<BookTab>
и использующим ContentTemplateSelector для создания различных вкладок.
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>
Тип в BookTab определяет DataTemplate, используемый на соответствующей вкладке, Имя отображается в заголовке вкладки,и данные, которые должны отображаться в содержимом вкладки, т.е. DataGrid.Для данных установлено ObservableCollections разных типов.
DataTemplate может выглядеть следующим образом:
<DataTemplate x:Key="bookTabTemplate">
<TabItem Name="bookTab">
<Grid>
<DataGrid Name="bookGrid">
...
</DataGrid>
</Grid>
</TabItem>
</DataTemplate>
Я пробовал разные способы привязать свойство Data к ItemsSource DataGrid, но все, что я получил, - это слово, отображающее сетку"Book" (значение свойства BookTab's Name).Я предполагаю, что мне нужно каким-то образом распространять привязку TabControl к DataGrid, но я не могу понять это.