我有一個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,但我無法弄清楚。