J'essaie de mettre en œuvre le modèle MVVM dans WPF. J'ai suivi les conseils de Jeremy Alles. Application de démonstration MVVM très simple . J'ai une ListBox qui a une liaison avec une ObservableCollection :
<ListBox
Name="myListBox"
IsSynchronizedWithCurrentItem="True"
ItemsSource="{Binding Persons}">
<ListBox.ItemTemplate>
<DataTemplate>
<views:PersonsView />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
J'ai ajouté un ICollectionView pour gérer l'élément sélectionné dans la ListBox. Il me permet également d'avoir deux boutons qui me permettent de sélectionner les éléments précédents et suivants de la liste.
private void GoToPrevious()
{
this.collectionView.MoveCurrentToPrevious();
}
private void GoToNext()
{
this.collectionView.MoveCurrentToNext();
}
Tout fonctionne parfaitement, mais lorsque l'élément sélectionné se trouve en dessous de la zone affichée de la boîte de liste, la barre de défilement de cette dernière ne se déplace pas en conséquence.
Comment puis-je synchroniser la barre de défilement/zone d'affichage de la ListBox avec l'élément sélectionné ?