2010-09-03 105 views
5

我试图将WPF选项卡控件的选定选项卡项目与添加的最后一项同步。检测何时将选项卡项目添加到WPF选项卡控件

由于不存在例如IsSynchedWithLastAddedItem,我试图检测何时添加一个项目,以便在最后添加的SelectedItem点。

当添加TabItem时,我无法找到引发的事件 - 无论是在选项卡控件或其Items上。

我相信这样的东西一定存在,所以我希望有人能帮助我。

回答

9
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接口。

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

+0

谢谢,第二个选项工作完美。 第一个只会在ItemsSource被设置后才能工作,所以你不能在视图的构造函数中使用它。 原因是在那一点上ItemsSource仍然是空的,因此默认视图也是。 – 2010-09-04 18:41:03

+0

第二个也适用于我。 – torpederos 2013-02-19 06:58:18

0

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

虽然不知道如何在XAML中做到这一点。

相关问题