Bonjour à tous,
Je développe actuellement une application universelle. J'ai une liste d'image en Xaml que j'ai bindé sur une liste de string comme ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 <ScrollViewer Grid.Column="0" VerticalScrollBarVisibility="Auto"> <ScrollViewer.Background> <ImageBrush ImageSource="../Images/JeuPage/fond.png"/> </ScrollViewer.Background> <ItemsControl Name="swCartes" ItemsSource="{Binding lstCartes}"> <ItemsControl.ItemTemplate> <DataTemplate> <Image Source="{Binding Path=URI}" Stretch="Fill" Margin="100" Tapped="Image_Tapped"/> </DataTemplate> </ItemsControl.ItemTemplate> <ItemsControl.ItemsPanel> <ItemsPanelTemplate> <StackPanel Orientation="Vertical" ScrollViewer.HorizontalScrollBarVisibility="Disabled" /> </ItemsPanelTemplate> </ItemsControl.ItemsPanel> </ItemsControl> </ScrollViewer>
Donc au chargement de l'application je lui envois une liste d'objet contenant les string des URI de mes images comme ceci :
Un joueur est un objet métier contenant une liste de carte (sa main). Une carte est un autre objet métier ne contenant comme seule propriété un string nommé URI. Donc au chargement de l'application, j'ai bien toutes mes cartes d'affichées sans aucun soucis. L'objectif de l’événement tapped est supprimer la carte tapée par l'utilisateur (dans la liste de mon objet joueur et dans l'interface graphique). Je procède comme ceci.
Code : Sélectionner tout - Visualiser dans une fenêtre à part this.swCartes.ItemsSource = this.lstJoueurs[0].Main;
Mon problème est que la liste de carte de mon joueur est bien mise à jour, mais l'interface graphique n'est pas rafraîchie et affiche toujours la carte sensée être supprimée. Notez que relevé l'événement tapped sur la carte normalement supprimée ne lève pas d'exception. Ma liste de carte dans la classe joueur est de type list<Carte>. Je souhaiterais savoir comment rafraîchir mon interface graphique.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 private void Image_Tapped(object sender, TappedRoutedEventArgs e) { Image img = sender as Image; Carte ar = img.DataContext as Carte; this.lastCarte.DataContext = ar; this.lstJoueurs[0].Main.Remove(ar); this.swCartes.ItemsSource = this.lstJoueurs[0].Main; }
Merci d'avance.
Partager