2009-08-20 6 views
0

Dans une boîte de dialogue de mon application, j'ai une collection observable (stockée ailleurs) liée à une liste d'onglets. Lorsque je ferme et rouvre la boîte de dialogue, l'onglet actuellement sélectionné est perdu et se termine par le premier. Comment configurer mes onglets pour que l'onglet sélectionné persiste? J'ai eu l'impression que la collection observable avait la propriété "current item", mais cela ne semble pas être le cas. J'ai regardé ItemCollection et CollectionView, qui ont une propriété d'élément en cours, mais je ne suis pas sûr si cela m'intéresse.Collection observable avec l'objet actuel?

Répondre

1

Dans l'événement Closing de votre boîte de dialogue, enregistrez l'élément actuellement sélectionné TabItem.

En cas Loaded de votre dialogue, dites simplement:

yourTabControl.SelectedItem = _savedTab; 

code-behind est la meilleure façon d'y arriver. ObservableCollection ne va pas vous aider.

2

Ceci est une vieille question, mais je vais répondre à ceux qui pourraient être à la recherche de cette ...

La façon dont je manié cela en utilisant le modèle MVVM devait avoir sur mon ViewModel à la fois un ObservableCollection auquel TabControl lie son ItemsSource ainsi qu'une propriété ActiveItem à laquelle le TabControl lie sa propriété SelectedItem.

Cela fonctionne plutôt bien et conserve les principes de conception de MVVM (c'est-à-dire que le ViewModel ne doit pas être conscient de la vue).

+1

+1 Meilleure approche MVVM centrée. Merci beaucoup. –

Questions connexes