2012-03-26 6 views
0

У меня есть табулятор TabControl и привязываю индекс каждого элемента TabItem к соответствующему свойству в моей модели представления. Элемент ItemsSource является ObservableCollection, и я использую Bea Stollnitz's Drag/Drop functionality для обеспечения переупорядочения управления табуляторами.TabControl - привязка данных TabItem order

У меня возникает ощущение, что он должен быть обработан в шаблоне данных для заголовка элемента вкладки, но я не смог заставить его работать.

ответ

1

Ваш TabControl.ItemsSource должен быть привязан к вашей коллекции, чтобы переупорядочить порядок элементов табуляции, просто переустановите сборку.

Раньше я работал с кодом перетаскивания Bea, чтобы создать TabControl, который позволил пользователям перетаскивать элементы табуляции, и я думаю, что большая часть того, что нужно, находится в коде, который она предоставляет. При удалении он удаляет перетаскиваемый объект из своей родительской коллекции и вставляет его в новое место в целевой коллекции drop, которая в вашем случае является той же коллекцией.

Редактировать

Основываясь на ваш комментарий ниже об обновлении ViewModel с индексом Tab, попробуйте использовать CollectionChanged событие.

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

Да, у меня есть та часть его работа, и он повторно заказы язычков правильно, но у меня нет никакого способа обновления модели вида вкладки, который был только перемещен с новым индексом. Другими словами, TabControl.ItemsSource является ObservableCollection . В классе MyItem у меня есть свойство TabSequence. Когда я повторно заказываю вкладку, мне нужно, чтобы свойство TabSequence обновлялось с помощью нового индекса вкладки. –

+0

@ZF Вы должны иметь возможность подключиться к событию 'CollectionChanged' и обновлять' TabSequence' каждого элемента. Я обновил свой ответ на примере. – Rachel

+0

Отлично, я даже не рассматривал событие CollectionChanged. Спасибо! –

Смежные вопросы