【问题标题】:Detecting when a tab item was added to WPF Tab control检测何时将选项卡项添加到 WPF 选项卡控件
【发布时间】:2010-09-04 06:26:16
【问题描述】:

我正在尝试将 WPF 选项卡控件的选定选项卡项与添加的最后一项同步。

因为没有这样的属性,例如IsSynchedWithLastAddedItem,我正在尝试检测添加项目的时间,以便将 SelectedItem 指向最后添加的项目。

当添加 TabItem 时,我找不到引发的事件 - 无论是在选项卡控件还是它的项目上。

我确信肯定存在类似的东西,所以我希望有人可以帮助我。

【问题讨论】:

    标签: c# wpf


    【解决方案1】:
    var view=CollectionViewSource.GetDefaultView(m_tabControl.ItemsSource);
    view.CollectionChanged+=(o,e)=>{/*Here your code*/};
    

    如果您直接使用 Items-collection,同样的技术也可以使用。获取此集合的默认 CollectionViewSource。

    var view=CollectionViewSource.GetDefaultView(m_tabControl.Items);
    view.CollectionChanged+=(o,e)=>{/*Here your code*/};
    

    正如 Timores 所写,对于 m_tabControl.Items 属性,您可以直接附加处理程序。大多数 ItemsSource 引用也是如此,但您必须检查自己是否有 INotifyCollectionChanged 接口。

    我没有测试过。如果不起作用,请发表评论。

    【讨论】:

    • 谢谢,第二个选项效果很好。第一个仅在设置 ItemsSource 后才起作用,因此您不能在视图的构造函数中使用它。原因是此时 ItemsSource 仍然为 null,因此默认视图也是。
    【解决方案2】:

    Items 集合是 ItemCollection 类型,它派生自实现 INotifyCollectionChanged 的​​ CollectionView。因此,您可以收听 CollectionChanged 并了解何时添加项目。

    不过,不知道如何在 XAML 中做到这一点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-24
      • 1970-01-01
      相关资源
      最近更新 更多