2008-10-15 67 views
5

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

我们是这个样子的经过:

| > > > |

而且的TabItems的可见性是通过结合确定。

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

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

你会如何处理这个问题?

+0

没有看到直接的解决方案,我可以想建立一个自定义的TabControl的。但是能见度取决于布置Tabitems的Panel的类型,如果有的话,给我们更多的细节。 – 2008-10-15 05:53:37

+0

我们正在使用WrapPanel。为了给你一个更好的想法,标题是重叠的箭头,并且开始和结束需要是方形的。 我确实通过在TabItem可见性上应用样式而在代码中工作,但我很好奇看到别人怎么想。 – Donnelle 2008-10-15 07:20:11

回答

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; 
    } 

这很简单,如果你编程的标签项目添加到您的控制... :)

1

注意,而TabControl的是在考虑到我们的TabItems的可见性不会受到影响,所以我们只能应用样式当TabControl可见性发生变化时。

 
private void Breadcrumb_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e) 
{ 
     if ((bool)e.NewValue) 
     { 
      if (sender is TabControl) 
      { 
       TabControl tabControl = (TabControl)sender; 
       int firstVisible = -1; 

       for (int i = 0; i -1) //if is -1, they're all invisible 
        { 

         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"); 
           break; 

          } 
         } 
        } 
       } 
      } 
     } 
相关问题