2012-02-14 65 views
2

我綁定TabControl的ItemsSource,當我添加新的TabItem時,它是可見的但未被選中。我想更改TabControl的SelectedIndex,但我不知道如何從最近創建的TabItem中獲取此索引。
請幫忙。使用數據綁定獲取TabItem的索引

+0

是否要選擇當前添加的TabItem,或者您希望將其索引用於其他目的......? – Ankesh 2012-02-14 05:21:18

+0

選擇目前添加的標籤項 – Never 2012-02-14 05:28:13

+0

查看我的回答下面..它應該對你有幫助。如果有錯別字,請聯繫 – Ankesh 2012-02-14 05:34:34

回答

1

嘗試這樣做,假設tabControl是控件ID。

tabControl.SelectedIndex = 0; 

SelectedIndex是公共(Get和Set)的TabControl財產。閱讀更多關於MSDN

你可以閱讀更多有關數據bidning @

希望這個作品出來。

+0

我使用MVVM模式,所以我沒有TabControl的實例。 – Never 2012-02-14 05:26:08

+1

從[this](http://social.msdn.microsoft。com/Forums/en-US/wpf/thread/27185566-1637-490b-819e-252b955025b8 /)嘗試設置'IsSynchronisedWithCurrentItem =「true」;' – 2012-02-14 05:29:40

+0

好的解決方案,但不適合MVVM模式。 – sanguine 2012-02-14 05:54:20

1

tabControl.SelectedIndex = tabControl.Items.Count -1;

或者你可以綁定SelectedItem並指定新TabItemSelecteItem。 這會更乾淨。

1

TabItem具有IsSelected依賴項屬性。 你只是這樣做

tabItem.IsSelected = true. 

我相信新的選項卡會爲您選擇。

或者

可以使ItemContainerStyle的TabItem的控制和你以及與綁定的TabItems的IsSelected。

<TabControl x:Name="_tabControl" ItemsSource="{Binding .....}"> 
<TabControl.ItemContainerStyle> 
    <Style TargetType="TabItem"> 
     <Setter Property="IsSelected" Value="{Binding TabSelected}"/> 

    </Style> 
</TabControl.ItemContainerStyle> 

2

如果您使用的MVVM然後

<TabControl ItemsSource="{Binding Path=MySource}" 
      SelectedItem="{Binding Path=MyItem,Mode=Twoway}" 
      SelectedIndex="{Binding Path=MyIndex,Mode=TwoWay}"></TabControl> 

這裏說的是有界的屬性都在視圖模型和發射propertyChnaged(我離開了implememntation你)..

因爲我們已經添加Mode=TwoWay那麼如果您在視圖模型中向集合添加新項目,則可以將其設置爲MySource.Add(<itemInstance>);MyItem=<iteminstance>;它將在視圖中進行選擇,如果需要,您還將獲得SelectedIndex。

+0

這是完美的。 – sanguine 2012-02-14 05:55:13

+0

MyItem = ;我不能這樣做,因爲我在TabControl上使用模板,所以不是TabItem,我有一個錯誤。 – Never 2012-02-14 06:06:22

+0

MyItem的類型應該是MySource中持有的項目的類型 – sanguine 2012-02-14 06:57:45

0

tabControl1.SelectedIndex = 1;

tabControl1.SelectedIndex = tabControl1.items.count-1;