2008-10-15 68 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; 

          } 
         } 
        } 
       } 
      } 
     } 
相關問題