Problème de binding avec IsSynchronizedWithCurrentItem
Bonjour,
J'ai une CollectionView contenant une liste de valeurs (type chaine).
Cette CollectionView est bindée à une ListBox avec un IsSynchronizedWithCurrentItem=True
J'ai surchargé la méthode MoveCurrentToPosition de la CollectionView pour qu'aucun changement de sélection ne soit effectué (l'idée finale étant d'interdire dans certains cas la modification de la position courante).
Code:
1 2 3 4 5 6 7
| Public Class MaCollectionView
Inherits CollectionView
Public Overrides Function MoveCurrentToPosition(ByVal position As Integer) As Boolean
Return False
End Function
End Class |
Du coup, lorsque je clique sur ma liste graphique, mon CurrentItem de ma CollectionView ne change pas mais la sélection change. Ma liste n'est donc plus synchronizée avec sa source !!
Voici le code Behind de ma fenêtre.
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| Public Class I_TestUtilisateur
Public Sub New()
' This call is required by the designer.
InitializeComponent()
' Add any initialization after the InitializeComponent() call.
Dim maListe As New ObservableCollection(Of String)(New String() {"Element 1", "Element 2", "Element 3", "Element 4"})
Me.DataContext = New MaCollectionView(maListe)
End Sub
End Class |
Voici le XAML de ma fenêtre.
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| <Window x:Class="I_TestUtilisateur"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="I_TestUtilisateur" Height="300" Width="300">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="237*" />
<RowDefinition Height="24*" />
</Grid.RowDefinitions>
<ListBox ItemsSource="{Binding}" IsSynchronizedWithCurrentItem="True" />
</Grid>
</Window> |
Comment peut-on annuler la modification d'un CurrentItem dans la CollectionView et que la liste graphique tienne compte de cette annulation ?
Merci pour votre aide.