2012-05-06 74 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

相关问题