2011-01-08 91 views
1

我試圖在列表視圖或列表框中顯示打開的選項卡名稱列表(建議?)。在列表視圖中顯示打開的TabItem名稱

一直在通過不同類型的綁定選項,我可以綁定到單個選項卡名稱,但它顯示的是垂直而不是水平。這是我的XAML:

<ListView DockPanel.Dock="Left" 
      Height="352" 
      Name="listView1" 
      Width="132" 
      ItemsSource="{Binding ElementName=RulesTab, Path=Name}" 
      IsSynchronizedWithCurrentItem="True" 
      FlowDirection="LeftToRight" 
      HorizontalAlignment="Left" 
      HorizontalContentAlignment="Left" 
      DataContext="{Binding}"> 

任何指針將不勝感激,因爲我希望能夠看到一個所有選項卡打開,然後雙擊列表,以使標籤成爲關注的焦點。非常感謝!

+0

我不太明白你的主要問題是什麼,你只是需要的物品修復被列垂直而非水平? – 2011-01-08 03:35:11

+0

我想有多個問題對不起:)主要是,我如何得到它列出tabcontrol中的所有tabitem名稱?現在我只能讓它顯示一個tabitem頭文件(我的代碼中的RuleTab是一個單獨的標籤)。我試着將綁定設置爲tabcontrol名稱,然後選擇名稱,標題和tabindex ...仍然沒有顯示在列表中。 – 2011-01-08 03:40:34

回答

0

這裏是一個TabControlListBox顯示,在它的TabItems的名字的例子:

<Grid> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="Auto"/> 
     <ColumnDefinition Width="*"/> 
    </Grid.ColumnDefinitions> 
    <TabControl Grid.Column="0" Name="tabControl1"> 
     <TabItem Header="Tab1"/> 
     <TabItem Header="Tab2"/> 
     <TabItem Header="Tab3"/> 
     <TabItem Header="Tab4"/> 
    </TabControl> 
    <ListBox Grid.Column="1" ItemsSource="{Binding Items, ElementName=tabControl1}"> 
     <ListBox.ItemContainerStyle> 
      <Style TargetType="{x:Type ListBoxItem}" BasedOn="{StaticResource {x:Type ListBoxItem}}"> 
       <EventSetter Event="MouseDoubleClick" Handler="ListBoxItem_DoubleClick"/> 
      </Style> 
     </ListBox.ItemContainerStyle> 
     <ListBox.ItemTemplate> 
      <DataTemplate> 
       <TextBlock Text="{Binding Header}"/> 
      </DataTemplate> 
     </ListBox.ItemTemplate> 
    </ListBox> 
</Grid> 

,這裏是後面的代碼:

private void ListBoxItem_DoubleClick(object sender, MouseButtonEventArgs mouseButtonEventArgs) 
{ 
    var tabItem = (TabItem)((ListBoxItem)sender).Content; 
    tabControl1.SelectedItem = tabItem; 
} 

編輯添加雙擊行爲。

1

簡單的例子如何枚舉的標籤在列表視圖選項卡控件:

<TabControl Name="MyTabControl"> 
    <TabItem Header="Tab1"> 
    </TabItem> 
    <TabItem Header="Tab2"> 
    </TabItem> 
</TabControl> 

<ListView DockPanel.Dock="Left" 
      ItemsSource="{Binding ElementName=MyTabControl, Path=Items}" 
      DataContext="{Binding}"> 
      <ListView.ItemTemplate> 
       <DataTemplate> 
        <TextBlock Text="{Binding Header}"></TextBlock> 
       </DataTemplate> 
      </ListView.ItemTemplate> 
</ListView> 
1

我仍然不能確定,究竟你想要什麼,反正這如果需要也可以進行調整。 首先,如果你綁定到一個特定的項目,你總是會有一個項目,你需要將ItemsSource設置爲一個集合。
假設你想擁有所有選項卡的名稱或標題的列表,你可以將標籤控件的ItemsItemsSource然後再塗ItemTemplate,一些示例代碼:

<ListBox ItemsSource="{Binding ElementName=TabControlSrc, Path=Items}"> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <TextBlock Text="{Binding Header}" Margin="5"/> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

如果你不這樣做使用ItemTemplate你會得到一個錯誤,因爲同一個項目只能是一個父項的可視化子項。
坦率地說,這似乎有點沒有意義,因爲它只是重申你的標籤,我誤解了一些東西嗎?如果是這樣,請進一步澄清。

編輯:呵呵笑,三人幾乎相同的答案......