2014-05-06 29 views
0

我在TabControl中虛擬化視圖時遇到各種問題。幸運的是,我發現了一些我認爲可以解決this CodeProject article中的所有問題。以編程方式爲HeaderTemplate指定綁定

雖然這個解決方案引入了一個問題,那就是它銷燬我的HeaderTemplate。標籤標題與內容控件具有相同的內容。

我認爲使用一個TabControl這樣的:

<TabControl 
     behaviors:TabItemGeneratorBehavior.ItemsSource="{Binding MyItems, Mode=OneWay}" 
     behaviors:TabItemGeneratorBehavior.SelectedItem="{Binding MySelectedItem, Mode=TwoWay}"> 

    <TabControl.Resources> 
     <Style TargetType="TabItem"> 
      <Setter Property="HeaderTemplate"> 
       <Setter.Value> 
        <DataTemplate> 
         <ContentPresenter> 
          <ContentPresenter.Content> 
           <TextBlock Text="{Binding Title}"/> 
          </ContentPresenter.Content> 
         </ContentPresenter> 
        </DataTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 
    </TabControl.Resources> 
</TabControl> 

behaviors:TabItemGeneratorBehavior從CodeProject上的文章。該TabItemGeneratorBehavior裏面是產生TabItems的方法:

private void AddTabItem(object item) 
{ 
    var contentControl = new ContentControl(); 
    var tab = new TabItem 
     { 
      DataContext = item, 
      Content = contentControl, 
      HeaderTemplate = _tabControl.ItemTemplate 
     }; 

    contentControl.SetBinding(ContentControl.ContentProperty, new Binding()); 
    tab.SetBinding(HeaderedContentControl.HeaderProperty, new Binding()); 

    _tabControl.Items.Add(tab); 
} 

我想我的問題是,設置了HeaderProperty裝訂線。如何設置綁定,以便它使用上面我的XAML中定義的HeaderTemplate

回答

0

OP在這裏。

的解決方案是創建TabItem時卸下HeaderTemplate分配:

var tab = new TabItem 
    { 
     DataContext = item, 
     Content = contentControl, 
     // HeaderTemplate = _tabControl.ItemTemplate 
    }; 
相關問題