【问题标题】:Getting index of TabItem using data binding使用数据绑定获取 TabItem 的索引
【发布时间】:2012-02-14 05:13:49
【问题描述】:

我绑定了TabControl的ItemsSource,当我添加新的TabItem时,它是可见的,但没有被选中。我想更改 TabControl 的 SelectedIndex,但我不知道如何从最近创建的 TabItem 中获取此索引。
请帮助。

【问题讨论】:

  • 您是要选择当前添加的 TabItem 还是要将其索引用于其他目的...??
  • 选择当前添加的TabItem
  • 在下面查看我的回答.. 它应该可以帮助你.. 抱歉,如果有错别字
  • 这个 Q 的标题具有误导性。正如标题所说,我想绑定到选项卡项的索引。但 Q 与此无关。

标签: wpf binding


【解决方案1】:

如果你使用的是 MVVM 那么

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

这里有界的属性都在视图模型中并触发 propertyChnaged(我把它的实现留给你)..

因为我们已经添加了Mode=TwoWay,那么如果您在视图模型中将新项目添加到您的集合中,您可以将其设置为MySource.Add(&lt;itemInstance&gt;);MyItem=&lt;iteminstance&gt;;,它将在视图中被选中,如果您需要,您还将获得 SelectedIndex。

【讨论】:

  • MyItem=;我不能这样做,因为我在 TabControl 上使用模板,所以 不是 TabItem 并且我有一个错误。
  • MyItem 的类型应该是 MySource 中保存的项目类型
  • 我使用模板,所以我必须创建自己的类来绑定。
  • @Colder u r 模板将在视图级别使用....在 viewModel 级别,如果某些模型类(例如 ObservableCollection&lt;Person&gt;)绑定到 TabControl,那么您将拥有一个集合 @987654326 @ 将根据添加到集合中的人数创建...所以您添加的人是您的 tabItem...
【解决方案2】:

尝试这样做,假设 tabControl 是控件 ID。

 tabControl.SelectedIndex = 0;

SelectedIndexTabControl 的公共(获取和设置)属性。阅读更多MSDN

您可以阅读更多关于数据投标的信息@

希望一切顺利。

【讨论】:

  • 我使用 MVVM 模式,所以我没有 TabControl 的实例。
  • 来自this 尝试设置IsSynchronisedWithCurrentItem="true";
  • 很好的解决方案,但不适合 MVVM 模式。
【解决方案3】:

TabItem 具有 IsSelected 依赖属性。 你就这样做

tabItem.IsSelected = true. 

我相信会为您选择新标签。

或者

您可以为 TabItem 控件制作 ItemContainerStyle,然后将 IsSelected 与 TabItems 绑定。

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

    </Style>
</TabControl.ItemContainerStyle>

【讨论】:

    【解决方案4】:

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

    或者您可以绑定SelectedItem 并将新的TabItem 分配为SelecteItem。 这样会更干净。

    【讨论】:

      【解决方案5】:

      tabControl1.SelectedIndex = 1;

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

      【讨论】:

        猜你喜欢
        • 2012-02-18
        • 1970-01-01
        • 2011-11-02
        • 2017-06-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-27
        • 1970-01-01
        相关资源
        最近更新 更多