我有一个TabControl的ItemsSource设置为ObservableCollection<BookTab>
并使用ContentTemplateSelector创建不同的选项卡。绑定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>
Type在BookTab确定的DataTemplate在相应的标签所使用的,名称被显示在选项卡头和数据应该被显示在选项卡的内容,即,数据网格。 数据设置为不同类型的ObservableCollections。
DataTemplate中看起来是这样的:
<DataTemplate x:Key="bookTabTemplate">
<TabItem Name="bookTab">
<Grid>
<DataGrid Name="bookGrid">
...
</DataGrid>
</Grid>
</TabItem>
</DataTemplate>
我试图将数据绑定属性DataGrid的ItemsSource时不同的方式,但我得到的是网格中显示单词“书”(BookTab的名称属性值)。 我的猜测是我必须以某种方式传播TabControl的绑定到DataGrid,但我无法弄清楚。