5

我想在 TabControl 中的第一个和最后一个 TabItems 上设置样式,并在 TabItems 的可见性更改时更新它们。我看不到使用触发器的方法。

我们追求的是这样的:

| > > > |

而 TabItems 的可见性是由绑定决定的。

我确实让它在代码中工作。在 TabItem 可见性更改时,通过 TabItems 枚举,直到找到第一个可见的。在那个上设置样式。对于所有其他可见的 TabItem,将它们设置为尖头样式(这样以前第一个可见的现在是尖头的)。然后从头开始,直到找到一个可见的 TabItem 并在该选项上设置最后一个样式。(这也让我们解决了 TabControl 的问题,如果没有选择任何可见的 TabItem,它将显示不可见的 TabItem 的内容。)

毫无疑问,我可以对我的方法进行改进,但我不相信这是正确的方法。

你会如何处理这个问题?

4

3 回答 3

1

请注意,当 TabControl 在视图中时,我们的 TabItems 的可见性不会受到影响,因此我们只能在 TabControl 可见性更改时应用样式。

私人无效面包屑_IsVisibleChanged(对象发送者,DependencyPropertyChangedEventArgs e)
{
        if ((bool)e.NewValue)
        {
            如果(发件人是 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 回答
1

抱歉,到目前为止,您能否更好地解释一下,我已将您的问题解释为:

当在选项卡控件的开头和结尾在选项卡项目上更改可见性时,请应用特定的样式 - 即,如果它滚动看不到视图,然后更改样式?

如果是这样,那么当您添加 TabItems(以编程方式或在 wpf 中)时,您将需要在您希望处理的 TabItems 上实现 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 回答
0

我采用了 silverlight tabcontrol 并使 tabitems 可滚动。这是帖子的链接。我想这就是你要找的。

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

于 2010-07-20T13:58:26.253 回答