TabControl - 数据绑定 TabItem 顺序
Posted
技术标签:
【中文标题】TabControl - 数据绑定 TabItem 顺序【英文标题】:TabControl - databinding TabItem order 【发布时间】:2012-03-26 17:52:06 【问题描述】:我有一个数据绑定的 TabControl,并希望将每个 TabItem 的索引绑定到我的视图模型中的相应属性。 ItemsSource 是一个 ObservableCollection,我使用Bea Stollnitz's Drag/Drop functionality 提供选项卡控件重新排序。
我的直觉是它应该可以在选项卡项标题的数据模板中处理,但我无法让它工作。
【问题讨论】:
【参考方案1】:您的TabControl.ItemsSource
应该绑定到您的集合,因此要重新排列选项卡项的顺序,只需重新排列集合即可。
我之前使用 Bea 的拖放代码创建了一个允许用户拖放选项卡项目的 TabControl,我认为大部分需要的是她提供的代码。放置时,它会从其父集合中删除拖动的对象,并将其插入到放置目标集合中的新位置,在您的情况下,它是同一个集合。
编辑
根据您在下面关于使用标签索引更新您的ViewModel
的评论,请尝试使用CollectionChanged
事件。
void MyCollection_CollectionChanged(object sender, CollectionChangedEventArgs e)
foreach (var item in MyCollection)
item.TabIndex = MyCollection.IndexOf(item);
【讨论】:
是的,我有它的那部分工作,它正确地重新排序选项卡,但我没有任何方法来更新刚刚移动的选项卡的视图模型指数。换句话说,TabControl.ItemsSource 是 ObservableCollectionCollectionChanged
事件并更新每个项目的TabSequence
。我已经用一个例子更新了我的答案。
完美,我什至没有考虑 CollectionChanged 事件。谢谢!以上是关于TabControl - 数据绑定 TabItem 顺序的主要内容,如果未能解决你的问题,请参考以下文章
WPF Adorner 在TabControl切换TabItem时消失
使用 MVVM 将新项目添加到 TabControl ItemSsource 时选择最后一个 TabItem
放置在 tabcontrol 的第二个 tabitem 中的数据网格的 WPF-'Index out of Range' 错误(但如果放置在第一个 tabitem 中,它工作正常)
如何将 TabControl 绑定到 ViewModel 集合?