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

C# Discussion :

Databinding, LongListSelector, et Collection.


Sujet :

C#

  1. #1
    Membre à l'essai
    Femme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2014
    Messages : 9
    Points : 20
    Points
    20
    Par défaut Databinding, LongListSelector, et Collection.
    Bonjour à tous,

    Je suis actuellement en train de développer une application pour WindowsPhone 8.x dans le cadre d'un projet de stage. Je suis débutant dans le domaine, et je me cogne tous les jours à des murs !!
    Bref, je sollicite vos connaissances pour éventuellement me mettre sur la piste afin de résoudre mon problème.

    Je cherche à developper mon application en essayant de respecter le Design Pattern MvvM en c#.NET.
    Sur la page principal de mon application, j'ai une LongListSelector binder sur une collection d'objet List<Mission>.
    Cela me génère donc un "block" par mission affichant les informations de cette dernière.
    Dans ce longListSelector, j'affiche donc des informations dans des textblock qui sont récupérées dans les propriétés de mes objets "Mission".
    Jusque la, je n'ai pas de problème.

    Cela se complique pour mon petit cerveau lorsque je cherche a afficher des informations appartenant à une collection de mon objet Mission.
    1) je n'arrive pas à accéder aux propriétés de mes objets de ma collection dans mon objet mission via le XAML.
    2) je dois récupérer les valeurs de certaines propriétés qui requiert un traitement afin sélectionner la bonne information et je ne vois pas comment le faire.
    Pour imager, mon objet mission contient une collection d'etapes(de 2 à n etapes). Je dois récupérer la première et la dernière étape en fonction de l'ID de l'étape.
    Hors je ne vois pas comment faire un traitement sur une liaison de données fait sur un LongListSelector.

    Extrait de ma page frmListeMissions.xaml:
    Code xaml : 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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    <phone:LongListSelector Background="Gray" 
                                    HorizontalAlignment="Stretch" 
                                    Height="auto" Margin="0,10,0,0" 
                                    Grid.Row="2" 
                                    VerticalAlignment="Top"  
                                    x:Name="llsMission" 
                                    SelectionChanged="llsMission_SelectionChanged" 
                                    ItemsSource="{Binding llsMission}">
     
                <phone:LongListSelector.ItemTemplate>
                    <DataTemplate>
    <!--en-tete-->
                            <TextBlock Grid.Row="0" Grid.Column="0" x:Name="lblCmpMiss" Text="1/1" Margin="10,0" FontSize="24" FontWeight="Bold" HorizontalAlignment="Center"/>
                            <TextBlock Grid.Row="0" Grid.Column="1" x:Name="lblNumMission" Text="{Binding IdMission}" Margin="10,0" FontSize="24" FontWeight="Bold"/>
                            <TextBlock Grid.Row="0" Grid.Column="2" x:Name="lblNbEtape" Text="{Binding NbEtape}" Margin="10,0" FontSize="24" HorizontalAlignment="Left"/>
    <!-- Infos Premiere Etape-->                     
                            <TextBlock Grid.Row="1" Grid.Column="0" x:Name="lblCPDebut" Text="{Binding Path=/ListEtape[0]/IdEtape}" Margin="10,0" FontSize="24"/>
                            <TextBlock Grid.Row="1" Grid.Column="1" x:Name="lblVilleDebut" Text="{Binding}" Margin="10,0" FontSize="24"/>
                            <TextBlock Grid.Row="1" Grid.Column="2" x:Name="lblDTHDebut" Text="{Binding}" Margin="10,0" HorizontalAlignment="Left"/>
    <!-- Infos Derniere Etape-->
                            <TextBlock Grid.Row="2" Grid.Column="0" x:Name="lblCPFin" Text="{Binding}" Margin="10,0" FontSize="24"/>
                            <TextBlock Grid.Row="2" Grid.Column="1" x:Name="lblVilleFin" Text="{Binding}" Margin="10,0" FontSize="24"/>
                            <TextBlock Grid.Row="2" Grid.Column="2" x:Name="lblPlusTot" Text="{Binding}" Margin="10,0" FontSize="24" HorizontalAlignment="Left"/>
                    </DataTemplate>
                </phone:LongListSelector.ItemTemplate>         
            </phone:LongListSelector>

    Extrait de mon code Behind frmListeMissions.xaml.cs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
           private  ViewModels.frmListeMissionsViewModel ListMissionVM;
            // Constructeur
            public frmListeMissions()
            {
     
                InitializeComponent();
                ListMissionVM = new ViewModels.frmListeMissionsViewModel();
                this.DataContext = ListMissionVM;
            }
    et pour finir, un extrait de mon code frmListeMissionsViewModel.cs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
            public List<Mission> llsMission { get; set; }
            public frmListeMissionsViewModel()
            {
                llsMission = Missions.ListMissions;       
            }
    Je ne suis pas toujours très claire dans mes explications. Par conséquent, je vous prie de ne pas trop m'en tenir rigueur, mais plutot de me questionner si besoin d'explications plus précises.
    Merci d'avance.

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2015
    Messages : 4
    Points : 6
    Points
    6
    Par défaut
    Bonjour,

    Je suis en stage et développe une appli Windows Phone 8.1 comme toi et je me heurte au même problème de binding sur mon LongListSelector et ma List<Article>.
    Je vois que la discussion est inscrite comme résolue.

    As-tu un exemple de code à fournir stp car je commence vraiment à saigner des neurones...

  3. #3
    Membre à l'essai
    Femme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2014
    Messages : 9
    Points : 20
    Points
    20
    Par défaut
    Bonjour Archipelle,

    j'ai plus contourné le problème qu'autre chose.
    Dans le but de formater mes données comme je le souhaite, je n'ai pas lié ma collection d'objet métier à mon controle graphique LongListSelector(LLS) directement.
    J'ai créé une classe intermédiaire, que j'ai nommé comme ma classe métier avec comme préfixe "Presentation".
    Ex : pour une classe métier nommé "Missions" j'ai créé une classe "PresentationMissions".
    Dans cette classe, les getter de mes propriétés contiennent le traitement permettant de formater les données comme je souhaite les affiché.

    Dans le ViewModel (pattern MVVM), j'instancie un objet de type "PresentationMissions" pour chaque Missions de ma collection de Missions.
    Chacun de ces objets est ajouté à un collection d'objet PrensetationMissions que je bind à mon controle graphique LLS.

    Cela ajoute un peu de traitement, mais ca m'a permis de solutionner mon problème.
    Il y a certainement de meilleur solutions.

    Pour illustrer un peu :
    Code csharp : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
            private void chargerDonnees()
            {
                llsMission = new List<PresentationListeMissions>();
                foreach (Mission m in Missions.ListMissions) // pour chaque objet mission de ma collection static de missions
                {
                    PresentationListeMissions mis = new PresentationListeMissions(m);
                    llsMission.Add(mis);
                }
            }

    Voilà, j'espère que çà pourra t'aider si tu n'as pas encore solutionné ton soucis.

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

Discussions similaires

  1. [Débutant] Databinding listview<=> collection
    Par skysee dans le forum Windows Presentation Foundation
    Réponses: 1
    Dernier message: 17/03/2013, 09h51
  2. DataBinding: Element d'une collection dans une ComboBox.
    Par Ivynox dans le forum Windows Forms
    Réponses: 3
    Dernier message: 30/11/2009, 10h38
  3. Databinding avec des collections
    Par cobolfingaz dans le forum C#
    Réponses: 7
    Dernier message: 11/06/2008, 16h41
  4. [Databinding] bind sur une propriété d'une collection
    Par herveb dans le forum Général Dotnet
    Réponses: 2
    Dernier message: 11/12/2007, 10h35
  5. [VB6] Modifier la clé d'un élément d'une collection
    Par Ricou13 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 21/11/2002, 14h49

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