【发布时间】:2010-09-04 06:26:16
【问题描述】:
我正在尝试将 WPF 选项卡控件的选定选项卡项与添加的最后一项同步。
因为没有这样的属性,例如IsSynchedWithLastAddedItem,我正在尝试检测添加项目的时间,以便将 SelectedItem 指向最后添加的项目。
当添加 TabItem 时,我找不到引发的事件 - 无论是在选项卡控件还是它的项目上。
我确信肯定存在类似的东西,所以我希望有人可以帮助我。
【问题讨论】:
我正在尝试将 WPF 选项卡控件的选定选项卡项与添加的最后一项同步。
因为没有这样的属性,例如IsSynchedWithLastAddedItem,我正在尝试检测添加项目的时间,以便将 SelectedItem 指向最后添加的项目。
当添加 TabItem 时,我找不到引发的事件 - 无论是在选项卡控件还是它的项目上。
我确信肯定存在类似的东西,所以我希望有人可以帮助我。
【问题讨论】:
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 接口。
我没有测试过。如果不起作用,请发表评论。
【讨论】:
Items 集合是 ItemCollection 类型,它派生自实现 INotifyCollectionChanged 的 CollectionView。因此,您可以收听 CollectionChanged 并了解何时添加项目。
不过,不知道如何在 XAML 中做到这一点。
【讨论】: