IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Presentation Foundation Discussion :

Actualisation et binding [Débutant]


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite Avatar de Momoth
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2013
    Messages
    318
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2013
    Messages : 318
    Par défaut Actualisation et binding
    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 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.swCartes.ItemsSource = this.lstJoueurs[0].Main;
    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
    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;
            }
    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.

    Merci d'avance .

  2. #2
    Membre éclairé Avatar de koyot3
    Inscrit en
    Avril 2007
    Messages
    693
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 693
    Par défaut
    Hello Momoth,

    Alors déjà premier point : tu as pas besoin de spécifier le ItemsSource à la fois dans le xaml et le code cs.
    Ton datacontext, c'est bien le code-behind de ta vue ? (pas de viewmodel ?)

    Si oui , je te conseille d'avoir dans ton viewmodel (ou code-behind) une propriété telle que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public ObservableCollection<Carte> Cartes
    {
       get { return _cartes; }
       set { SetProperty(ref _cartes, value); }
    }
    Ainsi quand tu définis ton datacontext au chargement de ta page :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    DataContext = this;
    Cartes = new ObservableCollection<Cartes>(this.lstJoueurs[0].Main);
    Et dans ton xaml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <ItemsControl Name="swCartes" ItemsSource="{Binding lstCartes}">
    En espérant que ça t'aide.

    Bonne journée

  3. #3
    Membre émérite Avatar de Momoth
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2013
    Messages
    318
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2013
    Messages : 318
    Par défaut
    Bonjour Koyot3,

    Merci beaucoup pour ton aide, l'observable collection marche parfaitement bien .

    Mon problème est résolu.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Bind ou pas Bind?
    Par jonzuzu dans le forum MFC
    Réponses: 4
    Dernier message: 19/03/2004, 10h00
  2. []Erreur sur second emploi collection binding
    Par jacma dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 08/03/2004, 18h02
  3. Bind - sous-domaine
    Par _Gabriel_ dans le forum Réseau
    Réponses: 4
    Dernier message: 07/03/2004, 11h54
  4. [CR7]Actualisation des données depuis VB
    Par elifqaoui dans le forum SDK
    Réponses: 4
    Dernier message: 24/11/2003, 13h44
  5. Actualisation d'une liste "dépendante".
    Par Trilby dans le forum ASP
    Réponses: 6
    Dernier message: 19/11/2003, 18h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo