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).
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 !!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Voici le code Behind de ma fenêtre.
Voici le XAML de ma fenêtre.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Comment peut-on annuler la modification d'un CurrentItem dans la CollectionView et que la liste graphique tienne compte de cette annulation ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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>
Merci pour votre aide.
Partager