2010-06-01 63 views
0

嘿。我有一個綁定到可觀察集合的tabcontrol。Tabitem.focus只專注於tabitem標題

我試着做

var tabitem = (TabItem)this.SingleOrDefault(ti => ti.Name == tabname); 
    tabitem.Focus(); 
    ((UserControl)tabitem.Content).Focus(); 

而且它似乎是它的重點是TabItem的,但僅限於在的TabItem的頭一個BTN,而不是內容。 tabitem內容是另一個用戶控件。

我怎樣才能對焦變化的內容,從而使標籤確實被選中,而不僅僅是tabheader

我知道tabcontrol.selecteditem的,但IOM真的不知道我將如何實現這個作爲observablecollection實際上是一個我稱之爲ObservableTabCollection的類,它實現了observable集合。

回答

0

我的解決方案變得簡單地對將在TabControl的與observabletabcollection

public TabControl AssociatedTabControl; 

internal void BindToTabControl(TabControl TabCtrl) 
     { 
      AssociatedTabControl = TabCtrl; 
     } 

相關聯,然後一個方法調用

if (AssociatedTabControl != null) AssociatedTabControl.SelectedItem = tabitem; 
0

綁定TabControl.SelectedItem雙向到ObservableTabCollection中的特定TabItem。然後,您可以將綁定設置爲您從ObservableTabCollection中拉出的任何項目,以使該選項卡成爲顯示的選項卡。

+0

斯蒂芬嗨內observabletabcollection創建一個方法 - 謝謝您的回答。你能展示一些示例代碼嗎?它會在xaml還是在代碼隱藏?我寧願在代碼隱藏方面 – Jakob 2010-06-01 14:50:59

+0

爲什麼你更喜歡代碼隱藏?使用Silverlight的最大原因之一是避免儘可能地使用代碼隱藏。另外我想也許我對你的應用程序設置有點困惑。 TabControl從哪裏獲取它的TabItem?綁定到其他控件還是綁定到代碼隱藏的屬性? – Stephan 2010-06-01 15:10:48