2012-03-26 9 views
0

Ich habe ein DataBound-TabControl und möchte den Index jedes TabItem an eine entsprechende Eigenschaft in meinem View-Modell binden. Die ItemsSource ist eine ObservableCollection und ich verwende Bea Stollnitz's Drag/Drop functionality, um die Tab-Control-Neuordnung zu ermöglichen.TabControl - Datenbindung TabItem Reihenfolge

Mein Bauchgefühl ist, dass es in der Datenvorlage für die Registerkartenüberschrift behandelt werden könnte, aber ich konnte es nicht funktionieren.

Antwort

1

Ihre TabControl.ItemsSource sollte an Ihre Sammlung gebunden sein. Um die Reihenfolge der Registerkartenelemente neu anzuordnen, ordnen Sie die Sammlung einfach neu an.

Ich habe bereits mit Beas Drag/Drop-Code gearbeitet, um ein TabControl zu erstellen, mit dem Benutzer die Tab-Elemente ziehen und ablegen konnten. Bei einem Drop-Vorgang wird das gezogene Objekt aus seiner übergeordneten Sammlung entfernt und an der neuen Position in der Drop-Zielobjektgruppe eingefügt, die in Ihrem Fall dieselbe Sammlung ist.

bearbeiten

Basierend auf Ihren Kommentar unten über die Aktualisierung Ihrer ViewModel mit der Tab-Index, versuchen Sie das CollectionChanged Ereignis verwenden.

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

Ja, ich habe das Teil davon zu arbeiten, und es Nachbestellungen die Laschen richtig, aber ich habe keine Möglichkeit, die Ansicht Modell der Registerkarte aktualisieren, die nur mit dem neuen Index verschoben wurden. Mit anderen Worten, die TabControl.ItemsSource ist eine ObservableCollection . In der MyItem-Klasse habe ich eine TabSequence-Eigenschaft. Wenn ich eine Registerkarte neu anordne, muss die TabSequence-Eigenschaft mit dem neuen Registerindex aktualisiert werden. –

+0

@ZF Sie sollten in der Lage sein, sich in das 'CollectionChanged'-Ereignis einzuklinken und die' TabSequence' jedes Elements zu aktualisieren. Ich habe meine Antwort mit einem Beispiel aktualisiert. – Rachel

+0

Perfekt, ich hatte nicht einmal das CollectionChanged-Ereignis in Betracht gezogen. Vielen Dank! –

Verwandte Themen