5

TabControl の最初と最後の TabItems にスタイルを設定し、TabItems の可視性が変更されたときにスタイルを更新したいと考えています。トリガーでそうする方法がわかりません。

私たちが求めているのは次のようなものです。

| | > > > |

また、TabItems の可視性はバインディングによって決定されます。

私はそれをコードで動作させています。TabItem の可視性が変更されたら、最初に表示されるものが見つかるまで TabItems を列挙します。そのスタイルを設定します。他のすべての表示されている TabItems については、それらを先のとがったスタイルに設定します (以前に最初に表示されていたものが先のとがったスタイルになるようにします)。次に、表示されている TabItem が見つかるまで最後から開始し、その最後のスタイルを設定します。(これにより、表示されている TabItem が選択されていない場合に、表示されていない TabItem のコンテンツが表示されるという TabControl の問題にも対処できます。)

私の方法を改善できることは間違いありませんが、それが正しいアプローチであるとは確信していません。

これにどのようにアプローチしますか?

4

3 に答える 3

1

申し訳ありませんが、あなたの質問を次のように解釈しました。

タブ コントロールの最初と最後でタブ項目の可視性が変化したときに特定のスタイルを適用します。

その場合、TabItem を (プログラムまたは wpf で) 追加するときに、処理する TabItem に IsVisibleChanged イベント ハンドラーを実装する必要があります (つまり、最初と最後、またはすべて?)

    public Window1()
    {
        InitializeComponent();

        this.myTabItem.IsVisibleChanged += new DependencyPropertyChangedEventHandler(myTabItem_IsVisibleChanged);
    }

    private void myTabItem_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e)
    {
        myTabControl.Items[0].Style = FindResource("MyTabItemStyle") as Style;
    }

コントロールにタブ項目をプログラムで追加する場合、これは簡単です... :)

于 2008-10-15T12:01:50.833 に答える
1

TabControl が表示されている間、TabItems の可視性は影響を受けないことに注意してください。そのため、TabControl の可視性が変化した場合にのみスタイルを適用できます。

private void Breadcrumb_IsVisibleChanged(オブジェクト送信者、DependencyPropertyChangedEventArgs e)
{
        if ((bool)e.NewValue)
        {
            if (送信者が TabControl の場合)
            {
                TabControl tabControl = (TabControl)sender;
                int firstVisible = -1;

                for (int i = 0; i -1) //-1 の場合、すべて非表示
                    {

                        for (int i = tabControl.Items.Count - 1; i > firstVisible; i--)
                        {
                            TabItem tabItem = (TabItem)tabControl.Items[i];
                            if (tabItem.Visibility == Visibility.Visible)
                            {

                                tabItem.Style = (Style)FindResource("LastBreadcrumbTabItem");
                                壊す;

                            }
                        }
                    }
                }
            }
        }
于 2008-10-16T20:08:03.893 に答える
0

Silverlight タブコントロールを使用して、タブアイテムをスクロール可能にしました。ここに投稿へのリンクがあります。これがあなたが探しているものだと思います。

http://www.dansoltesz.com/post/2010/07/20/Silverlight-tabcontrol-with-scrollable-tabItems.aspx

于 2010-07-20T13:58:26.253 に答える