在TabControl的第一个和最后一个可见TabItem上设置样式

Don*_*lle 5 .net wpf xaml tabcontrol tabitem

我想在TabControl中的第一个和最后一个TabItems上设置一个样式,并在TabItems的可见性发生变化时更新它们.我无法通过触发器看到这样做的方法.

我们所追求的是这样的:

| > > > |

TabItems的可见性由绑定决定.

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

我可以对我的方法做出无可置疑的改进,但我不相信它是正确的方法.

你会怎么做?

Dav*_*ave 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;
    }
Run Code Online (Sandbox Code Playgroud)

如果您以编程方式将选项卡项添加到控件中,这很简单...:)

  • 作为心理图像,每个 TabItem 都是一个箭头形状 | > > > | 但第一个和最后一个有方形末端。如果 TabItem 0 变得不可见,则 TabItem 1 必须具有方形样式。TabItems 的可见性是通过绑定控制的。TabItems 不会滚动到视图之外。 (2认同)