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

Silverlight Discussion :

Binding à plusieurs niveaux


Sujet :

Silverlight

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur
    Avatar de The_badger_man
    Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2005
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 745
    Par défaut Binding à plusieurs niveaux
    Une fois n'est pas coutume c'est moi qui pose une question
    Bon alors, pour simplifier:
    j'ai une classe Question qui représente les questions d'un quiz et qui contient une liste de propositions de réponses possibles.
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public class Question
    {
        public int Id { get; set; }
        public string Enonce { get; set; }
        public List<Proposition> Propositions { get; set; }
    }
    public class Proposition
    {
        public string Enonce { get; set; }
        public bool Bonne { get; set; }
    }

    Je voudrais faire un UserControl qui affiche la liste des questions d'un quiz. Pour chaque question on affiche son Id (un textBlock), son enoncé (un textblock) et la liste des propositions sour forme de radiobutton.

    Voici le code du UserControl
    Code xml : 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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    <UserControl x:Class="QuizClient.UserControls.QuestionsControl"
        xmlns="<a href="http://schemas.microsoft.com/winfx/2006/xaml/presentation" target="_blank">http://schemas.microsoft.com/winfx/2...l/presentation</a>" 
        xmlns:x="<a href="http://schemas.microsoft.com/winfx/2006/xaml" target="_blank">http://schemas.microsoft.com/winfx/2006/xaml</a>">
        <Grid x:Name="LayoutRoot">
            <ScrollViewer>
                <ItemsControl x:Name="icQuestions" ItemsSource="{Binding '', Path=''}">
                    <ItemsControl.ItemsPanel>
                        <ItemsPanelTemplate>
                            <StackPanel x:Name="stackquestion" Margin="10" Orientation="Vertical" />
                        </ItemsPanelTemplate>
                    </ItemsControl.ItemsPanel>
                    <ItemsControl.ItemTemplate>
                        <DataTemplate>
                            <StackPanel Orientation="Vertical">
                                <StackPanel Orientation="Horizontal">
                                    <TextBlock Text="{Binding Path=Id}"/>
                                    <TextBlock Text="{Binding Path=Enonce}"/>
                            </StackPanel>
                                <ItemsControl x:Name="icPropositions" ItemsSource="{Binding Propositions}">
                                    <ItemsControl.ItemsPanel>
                                        <ItemsPanelTemplate>
                                            <StackPanel Margin="5" Orientation="Vertical" />
                                        </ItemsPanelTemplate>
                                    </ItemsControl.ItemsPanel>
                                    <ItemsControl.ItemTemplate>
                                        <DataTemplate>
                                            <RadioButton GroupName="???????????" Content="{Binding Path=Enonce}"/>
                                        </DataTemplate>
                                    </ItemsControl.ItemTemplate>
                                </ItemsControl>
                            </StackPanel>
                        </DataTemplate>
                    </ItemsControl.ItemTemplate>
                </ItemsControl>
            </ScrollViewer>
        </Grid>
    </UserControl>
    J'utilise un ItemsControl pour afficher les questions et un autre ItemsControl imbriqué pour les propositions de chaques questions.
    Tout cela fonctionne très bien, à un détail près: la propriété GroupName des radioButtons. Je voudrais affecter la même valeur (l'Id de la question) aux radioButtons d'une même question (d'une même liste de propositions).
    Bref, quelle est la syntaxe du Binding à utiliser ? Les radioButton se trouvent dans un ItemsControl dont la source de données est la liste des propositions d'une question. Comment "remonter" à la question elle même pour en obtenir l'Id ?
    Les règles du forum
    Le trio magique : FAQ + Cours + fonction rechercher
    Mes articles
    Pas de questions par messages privés svp

    Software is never finished, only abandoned.

  2. #2
    Membre chevronné
    Profil pro
    Étudiant
    Inscrit en
    Juin 2005
    Messages
    288
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2005
    Messages : 288
    Par défaut
    Malheureusement ce n'est pas comme en WPF où tu peux binder des élements suivant la hiérarchie avec le paramètre "Parent"

    La seule solution que je vois est que tu rajoute une propriété "QuestionID" dans ta classe Proposition afin que tu puisses la binder à ton GroupName

  3. #3
    Rédacteur
    Avatar de The_badger_man
    Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2005
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 745
    Par défaut
    Oui, c'est ce que j'ai finalement fait.
    Les règles du forum
    Le trio magique : FAQ + Cours + fonction rechercher
    Mes articles
    Pas de questions par messages privés svp

    Software is never finished, only abandoned.

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

Discussions similaires

  1. Binding d'un TreeView sur plusieurs niveaux avec images
    Par Spikuria dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 25/05/2009, 17h17
  2. Création JPopupMenu avec plusieurs niveaux
    Par gpcanto dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 01/06/2006, 08h50
  3. Apache 1.3 VirtualDocumentRoot à plusieurs niveaux
    Par marcha dans le forum Apache
    Réponses: 1
    Dernier message: 25/05/2006, 20h30
  4. Plusieurs niveaux de colonnes dans TDBGrid
    Par TicTacToe dans le forum Composants VCL
    Réponses: 4
    Dernier message: 31/01/2006, 10h44
  5. Création de plusieurs niveaux de sous formulaires
    Par Farbin dans le forum Access
    Réponses: 2
    Dernier message: 25/10/2005, 20h15

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