TabControl - 数据绑定TabItem顺序

时间:2012-03-26 17:52:06

标签: wpf binding mvvm tabcontrol

我有一个数据库TabControl,并希望将每个TabItem的索引绑定到我的视图模型中的相应属性。 ItemsSource是一个ObservableCollection,我正在使用Bea Stollnitz's Drag/Drop functionality来提供制表符控件重新排序。

我的直觉是它应该可以在标签项标题的数据模板中处理,但我无法使其正常工作。

1 个答案:

答案 0 :(得分:1)

您的TabControl.ItemsSource应该绑定到您的收藏集,因此要重新排列标签项的顺序,只需重新安排收藏。

我之前使用过Bea的拖放代码来创建一个允许用户拖放标签项的TabControl,我想大部分需要的是她提供的代码。在删除时,它会从其父集合中删除拖动的对象,并将其插入到放置目标集合中的新位置,在您的情况下,它是相同的集合。

修改

根据您在评论下使用标签索引更新ViewModel的评论,请尝试使用CollectionChanged活动。

void MyCollection_CollectionChanged(object sender, CollectionChangedEventArgs e)
{
    foreach (var item in MyCollection)
        item.TabIndex = MyCollection.IndexOf(item);
}