1

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

どんな助けでも非常に感謝されるでしょう。

ここに画像の説明を入力してください

4

1 に答える 1

3

このように2つのメインタブを作成します(メインタブはこれら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. 2 つのメイン タブの表示を変更します。

 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.余分なタブをすべて非表示にし、それらの一部のみを表示します(例:2つのメインタブを表示し、タグ1-8のタブを表示)

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

少し大変だったことはわかっていますが、優れたユーザー コントロールを作成すると気分が良くなります。ただし、このユーザー コントロールではタブ コントロールを使用することを忘れないでください。最初からカスタム タブ コントロールを作成し、このタブ コントロールを使用しないでください。

不透明度を変更してアニメーションを移動するのが良い場合は、タブのアニメーションを作成することもできますこの投稿を確認してください

于 2012-05-06T07:22:56.670 に答える