2012-05-06 88 views
1

我正試圖在WPF選項卡中實現類似於IE9中的選項卡。 當您在最後的多個選項卡中打開時,它們會變得越來越小,並且還會在左側和右側顯示按鈕,以便在選項卡之間滾動。TabControl - 在選項卡之間滾動

任何幫助將非常appritiated。

enter image description here

+0

您應該至少有一個標籤控制已經實現。這個問題仍然是通用的... – 2012-05-06 06:54:27

回答

2

創建兩個主選項卡(主要選項卡在回答這兩個選項卡)這樣

<TabItem Header="«" Name="LeftTab"/> 
    <TabItem Header="»" Name="RightTab"/> 

設置可見他們對隱伏。現在添加你想要的所有選項卡(用C#代碼或XAML),但不要忘了一套標記爲所有選項卡添加像下面

<TabItem Header="new" Name="tiNew" Tag="1"/> 
    <TabItem Header="edit" Name="tiEdit" Tag="2"/> 
    ... 

現在,當標籤數去比平常更多,你不能全部顯示在第1頁下做:

1.更改兩大標籤的可見..

bool is_Left_Right_tabVisible = false; 
if (tabControl1.Items.Count > 8) 
{ 
    LeftTab.Visibility = System.Windows.Visibility.Visible; 
    RightTab.Visibility = System.Windows.Visibility.Visible; 
    is_Left_Right_tabVisible = true; 

    } 
    else 
    { 
    LeftTab.Visibility = System.Windows.Visibility.Hidden; 
    RightTab.Visibility = System.Windows.Visibility.Hidden; 
    is_Left_Right_tabVisible = false; 
    } 

2.hidden所有額外的標籤,只顯示其中一些(例如:顯示兩個主要選項卡,並顯示標籤與標籤1 -8

3.如果隱藏在主選項卡用戶點擊(左或右標籤)一個標籤,並可見另一個標籤(例如:你有lefttab-1-2-3-4-righttab當用戶右鍵點擊隱藏NO 1和vsible 5號並注重5號)

private void RightTab_MouseUp(object sender, MouseButtonEventArgs e) 
    { 
    if (is_Left_Right_tabVisible) 
    { 
     TabItem ti = sender as TabItem; 
     if (ti.Name == "RightTab") 
     { 
      //find right tab must set to visible 
      int Showtabindex = 0; 
      var t1 = tabControl1.Items.OfType<TabItem>().Where(x => x.Visibility == System.Windows.Visibility.Hidden); 
      foreach (var item in t) 
      { 
       if (((int)item.Tag) > Showtabindex) 
        Showtabindex = (int)item.Tag; 
      } 
      //find left tab must go invisible 
      int Hiddentabindex = Showtabindex; 
      var t2 = tabControl1.Items.OfType<TabItem>().Where(x => x.Visibility == System.Windows.Visibility.Visible); 
      foreach (var item in t2) 
      { 
       if (((int)item.Tag) < Hiddentabindex) 
        Hiddentabindex = (int)item.Tag; 
      } 

      (tabControl1.Items[Hiddentabindex] as TabItem).Visibility = System.Windows.Visibility.Hidden; 
      (tabControl1.Items[Showtabindex] as TabItem).Visibility = System.Windows.Visibility.Visible; 

      //you can create drag and drop for tabs then user can change tab TAG 
     } 
     else if (ti.Name == "LeftTab") 
     { 
      //..... 
     } 
    } 
} 

我知道這是升技很難,但是當我創造了良好的用戶控件我感覺很好。 但不要忘記在這個用戶控件我們使用tabcontrol我們可以從第一個創建一個自定義選項卡控件,而不使用此tabcontrol。

,你還可以創建動畫的選項卡時,這些變化不透明度並移動動漫將是很好check this post

+0

謝謝! 我還沒試過,但看起來這是我需要的。 – Erez

相關問題