2012-02-14 19 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;