2011-10-06 44 views
0

說明:如何爲每個TabItem創建一個帶有多個標題的WPF TabControl?

目前我在這裏創建的主要內容應在一個TabControl呈現一個WPF應用程序的過程。

的存在的TabControl的:

  • 包含具有多個視圖,其中每一視圖應該是可見的作爲頁眉上的TabControl外部控制甲TabItem的;
  • 多個TabItems與我們自己的內容,每一個都有自己的頭。

WPF控件的樣式不是問題,但這種情況下需要一些控件本身的特殊行爲。問題是控件應該爲每個TabItem呈現多個Headers。

問題:

  • 什麼是使用這樣的情景最佳的控制?
  • 如果使用TabControl,應該進行哪些修改?

在此先感謝。

更新#1

針對渦這種控制的原型(你可以看到,外部控制是的Microsoft Office InfoPath FormControl):

<TabControl x:Name="FormViewsTabControl"> 
     <TabItem> 
     <TabItem.Headers> 
      <TabItemHeader Text="View A" /> 
      <TabItemHeader Text="View B" /> 
     </TabItem.Headers> 
     <TabItem.Content> 
      <winforms:WindowsFormsHost x:Name="InfoPathFormsHost"> 
       <infopath:FormControl x:Name="InfoPathFormControl" /> 
      </winforms:WindowsFormsHost> 
     </TabItem.Content> 
     </TabItem> 
     <TabItem Header="Letter"> 
     <local:CustomView /> 
     </TabItem> 
    </TabControl> 
+0

你能提供一些這樣的控制原型或草圖嗎?我無法想象具有多個標題的標籤項目。 – vorrtex

+0

@vorrtex請看這個原型的更新後的帖子。 –

+0

仍然不明白。你想把視圖A放在視圖B的下面嗎?或以上?還是在左邊?如果有更多的觀點比兩個更好? – vorrtex

回答

1

如果我沒有理解它正確然後你想要改變TabItems頭取決於你在外部控制中選擇哪個視圖。如果是這種情況,那麼你應該嘗試擴展你的外部控制,使用一個包含實際標題值的屬性,然後將其綁定到TabItmes標題。

+0

你的建議是可行的,但我還有一個問題。我不僅需要實際的標題值,還需要外部控件的其他視圖名稱(非活動視圖)。 –

+0

然後,您希望看到TabItems標題中的所有視圖名稱,但想區分所選視圖名稱。這聽起來有點困難,但也許你可以爲TabItems頭創建一個dataTemplate,它有一個列表框,然後將視圖列表綁定到它並將selectedItem綁定到實際選定的視圖,甚至可以設置列表框的樣式。 – BigL

0

您可以擁有它,以便TabItem.Header包含一個Panel元素,該元素可以包含多個子元素。例如:

<TabItem> 
    <TabItem.Header> 
    <StackPanel> 
     <TextBlock Text="View A" /> 
     <TextBlock Text="View B" /> 
    </StackPanel> 
    </TabItem.Header> 
    <TabItem.Content> 
    <winforms:WindowsFormsHost x:Name="InfoPathFormsHost"> 
     <infopath:FormControl x:Name="InfoPathFormControl" /> 
    </winforms:WindowsFormsHost> 
    </TabItem.Content> 
</TabItem> 
+0

好吧,我喜歡這個簡單!但是,如何使用此解決方案獲得一致的TabItem標題樣式? –

+0

@Monty - 一致如? – Amry

+0

看到我的開場白,與標題'視圖A'和'視圖B'一致,看起來與標題'字母'相同。 –

0

我們使用下面的鏈接

[http://zamjad.wordpress.com/2011/09/21/using-contenttemplateselector/]

當我們面臨這些類型問題

+0

請注意,[只有鏈接的答案](http://meta.stackoverflow.com/tags/link-only-answers/info)不鼓勵,所以答案應該是搜索解決方案的終點(vs.而另一個引用的中途停留時間往往會隨着時間推移而過時)。請考慮在此添加獨立的摘要,並將鏈接保留爲參考。 – kleopatra

相關問題