2012-05-06 16 views
1

IE9のように動作するWPFタブで実装しようとしています。 最後に多数のタブで開くと、タブが小さくなり、タブ間をスクロールするためのボタンが左側と右側に表示されます。TabControl - タブ間のスクロール

非常に助力されます。

enter image description here

+0

に良いでしょうあなたは既に実装され、少なくともタブコントロールを持つ必要があります。この質問はまだあまりにも一般的です... –

答えて

2

この

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

などの作成2つのメインタブは(メインタブが答えにこれら二つのタブです)ヒデにそれらの可視を設定します。今、あなたは(C#コードまたはXAMLで)したいすべてのタブを追加しますが、のための一連のタグを忘れてしまったタブが通常よりも多くを移動し、1ページ内のすべてを表示するカント数えるときに

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

以下のようなを追加し、すべてのタブをいけません以下の下で行います。タグ1と2つのメインタブとショータブを示しています。唯一の

2つのメインタブの表示1.change ..

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すべての余分なタブとそれらのいくつか(例が示します-8

3.ユーザーがメインタブ(左または右タブ)をクリックすると、非表示の1つのタブと別のタブが表示されます(例:lefttab-1-2-3-4-righttab) 1とvsible No 5とNo 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") 
     { 
      //..... 
     } 
    } 
} 

私はそれが難しいと知っていましたが、私は良いユーザーコントロールを作成しています。 しかし、このusercontrolを忘れることはありません。私たちはtabcontrolを使用します。最初からカスタムタブコントロールを作成し、このタブコントロールを使用しないでください。あなたはまた、これらの変更の不透明タブのためのアニメーションを作成して、アニメーションを移動することができます

check this post

+0

ありがとう!!! 私はまだそれを試していないが、それは私が必要なものだと思われる。 – Erez

関連する問題