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 :

Reutillisation du parametre "name" d'une ListBox.ItemTemplate


Sujet :

Silverlight

  1. #1
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Janvier 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Janvier 2009
    Messages : 24
    Par défaut Reutillisation du parametre "name" d'une ListBox.ItemTemplate
    Bonjour,

    voila mon probleme, j'ai une collection d'image et de texte, qui proviennent d'une base SQL.
    Je voudrais pouvoir réutilliser les textbox sans mon code behind, mais la probleme les noms des textbox n'existe pas dans le contexte actuel.

    • est-ce que c'est parceque j'ai une "ListBox.ItemTemplate" et un "DataTemplate" ? les nom seraient valable que lorsqu'il y a quelque chose a l'interieur (lors quon execute l'application) ?

    • est-ce possible de reutilliser les noms des textbox dans le code behind ? (et du coup pouvoir les passer en parametre dans une fonction)


    voila ma listbox :
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    <StackPanel x:Name="StackPanleVisuProduit">
     
     
                <ListBox x:Name="ListeProduit" Width="800" Height="800">
                    <ListBox.ItemTemplate>
                        <DataTemplate x:Name="testtest">
                          <!--    <StackPanel Orientation="Horizontal" x:Name="teretete">
                                   <Image Source ="{Binding PhotoItem}"/>
                            <TextBlock Text="{Binding RefItem}" VerticalAlignment="Center" Margin="10"/>
                            <TextBlock Text="{Binding NomItem}" VerticalAlignment="Center" Margin="10"/>
                            <TextBlock Text="{Binding DesItem}" VerticalAlignment="Center" Margin="10"/>-->
                                <Grid x:Name="TableauGrid" Background="BlanchedAlmond">
                                    <Grid.RowDefinitions>
                                        <!--trois rangées-->
                                        <RowDefinition></RowDefinition>
                                        <RowDefinition></RowDefinition>
                                        <RowDefinition></RowDefinition>
                                    </Grid.RowDefinitions>
                                    <Grid.ColumnDefinitions>
                                        <!-- trois colonnes-->
                                        <ColumnDefinition></ColumnDefinition>
                                        <ColumnDefinition></ColumnDefinition>
                                        <ColumnDefinition></ColumnDefinition>
                                    </Grid.ColumnDefinitions>
                                    <!--contenue des 6 cellules
                        <TextBlock Text="{Binding NomItem}" HorizontalAlignment="Left" Margin="10" Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2"/>
                        <Image Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2" Source="{Binding PhotoItem}"></Image>
                         <TextBlock Text="{Binding DesItem}" HorizontalAlignment="Left" Margin="10" Grid.Row="0" Grid.Column="2"/>
                       <Button x:Name="AjoutPanier" Width="110" Height="25" Content="Ajouter au panier"  Grid.Row="1" Grid.Column="3" Click="AjoutPanier_Click"></Button>-->
                                    <TextBox x:Name="NomIteme" Text="{Binding NomItem}" HorizontalAlignment="Center" Grid.Row="0" Grid.Column="1"></TextBox>
                                    <Image Source="{Binding PhotoItem}" Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2"></Image>
                                    <TextBlock Text="{Binding DesItem}" HorizontalAlignment="Right" Grid.Row="1" Grid.Column="2"></TextBlock>
                                    <Button x:Name="Button_Ajout" Width="110" Height="25" Content="Ajouter au panier" Click="AjoutPanier_Click" Grid.Row="2" Grid.Column="2"></Button>
                                    <TextBox x:Name="Quantiter" Width="110" Height="25" Grid.Row="2" Grid.Column="0"></TextBox>
                                    <TextBox x:Name="RefItem" Text="{Binding RefItem}"></TextBox>
     
                                </Grid>
                       <!--     </StackPanel>-->
                        </DataTemplate>
                    </ListBox.ItemTemplate>
                </ListBox>
                <TextBlock Width="100" Height="25" Margin="0,0,10,10" Text="Bonjour" HorizontalAlignment="Left"></TextBlock>
            </StackPanel>
    en esperant avoir ete assez clair, et en vous remerciant de vos futurs reponses

  2. #2
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Comme tu l'as dit, ils n'ont pas de nom.

    Tu peux les récupérer en code-behind, via un event par exemple, en utilisant le paramètre sender.

    Dis exactement ce que tu veux faire, qu'on puisse t'aiguiller.

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Tu peux aussi utiliser la méthode FindName du Template

  4. #4
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Citation Envoyé par tomlev Voir le message
    Tu peux aussi utiliser la méthode FindName du Template
    Y'a po en Silverlight (pas de FindName sur les Templates).

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par Skyounet Voir le message
    Y'a po en Silverlight (pas de FindName sur les Templates).

    [troll]ça pue silverlight ;-)[/troll]

  6. #6
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Janvier 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Janvier 2009
    Messages : 24
    Par défaut
    Citation Envoyé par Skyounet Voir le message
    Comme tu l'as dit, ils n'ont pas de nom.

    Tu peux les récupérer en code-behind, via un event par exemple, en utilisant le paramètre sender.

    Dis exactement ce que tu veux faire, qu'on puisse t'aiguiller.
    Merci de vos reponses.

    En gros dans ma listbox j'ai des images et des noms de produits, lorsque je clique sur "Ajouter au Panier" j'ajout dans une base SQL, le nom du produit, la quantiter voulus ....

  7. #7
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Janvier 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Janvier 2009
    Messages : 24
    Par défaut
    Citation Envoyé par Skyounet Voir le message
    Y'a po en Silverlight (pas de FindName sur les Templates).
    on trouve quand meme une methode FindName, dans le code behind

  8. #8
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Citation Envoyé par C.Burton Voir le message
    on trouve quand meme une methode FindName, dans le code behind
    Sur la ListBox oui, pas sur le Template.

  9. #9
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par C.Burton Voir le message
    on trouve quand meme une methode FindName, dans le code behind
    Oui, mais pas sur le Template. C'est une méthode de FrameworkElement

  10. #10
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Janvier 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Janvier 2009
    Messages : 24
    Par défaut
    Citation Envoyé par Skyounet Voir le message
    Sur la ListBox oui, pas sur le Template.
    ok, je vais regarder avec le paramètre sender.

  11. #11
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Janvier 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Janvier 2009
    Messages : 24
    Par défaut
    Après plusieurs heure de recherche sur le web,

    j'ai trouver quelque chose qui aurais put marcher :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ((TextBox)sender).Name = "DesItem"
    ,

    mais malheureusement j'ai une erreur lors de l'exécution, je précise que j'ai mis je bout de code dans un gestionnaire de click :

    le messagebox c'est juste pour voir se que sa rendais.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    private void Button_ajout_Click(object sender, RoutedEventArgs e)
            {
                MessageBox.Show(((TextBox)sender).Name = "DesItem");
            }
    Pourriez vous me dire si c'est la façon dont j'utilise le paramètre sender qui est mauvaise ou l'utilisation que j'en fait.

    Merci de vos réponses.

  12. #12
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    ben a priori le sender est un Button, pas un TextBox... donc tu ne peux pas le convertir en TextBox

  13. #13
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Janvier 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Janvier 2009
    Messages : 24
    Par défaut
    ok,

    je vais chercher autre chose alors

  14. #14
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Citation Envoyé par C.Burton Voir le message
    ok,

    je vais chercher autre chose alors
    Pourquoi autre chose ?

    Mets juste
    ((Button)sender).Name = "DesItem"

    Tu programmes au hasard ?

  15. #15
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Skyounet Voir le message
    Pourquoi autre chose ?

    Mets juste
    ((Button)sender).Name = "DesItem"

    Tu programmes au hasard ?
    Ce qu'il lui faut c'est une bonne dose de POO (Polymorphisme et autres)

  16. #16
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Janvier 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Janvier 2009
    Messages : 24
    Par défaut
    Citation Envoyé par Skyounet Voir le message
    Pourquoi autre chose ?

    Mets juste
    ((Button)sender).Name = "DesItem"

    Tu programmes au hasard ?
    Non je programme pas au hasard, pourquoi cette question ?

    ((Button)sender).Name = "DesItem" c'est si mon "DesItem" est un bouton ?, si "DesItem" est un TextBlock c'est pareil ?

  17. #17
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par C.Burton Voir le message
    ((Button)sender).Name = "DesItem" c'est si mon "DesItem" est un bouton ?, si "DesItem" est un TextBlock c'est pareil ?
    Le sender de l'évènement est toujours le bouton, jamais la TextBox...

  18. #18
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Janvier 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Janvier 2009
    Messages : 24
    Par défaut
    Citation Envoyé par tomlev Voir le message
    Le sender de l'évènement est toujours le bouton, jamais la TextBox...
    ok, merci de cette information.
    Dur dur quand même Silverlight, quand on si met pas a font dedans.

    Merci de vos réponses.

  19. #19
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Janvier 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Janvier 2009
    Messages : 24
    Par défaut
    ((Button)sender).Name = "NomItem" marche.

    quand je fait un "insert to" avec comme paramétre ((Button)sender).Name = "NomItem" sa m'insert "NomItem" dans mon champ.



    voila mon code d'appele de service :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ServiceReference1.ServiceClient ajoutpanier = new SiteWeb.ServiceReference1.ServiceClient();
    ajoutpanier.AjoutPanierCompleted += new EventHandler<SiteWeb.ServiceReference1.AjoutPanierCompletedEventArgs>(ajoutpanier_AjoutPanierCompleted);
    ajoutpanier.AjoutPanierAsync(InfoPageConnexion.TextBox_Login.Text, Today.Date, ((Button)sender).Name = "NomItem", ((Button)sender).Name = "RefItem");
    ou je dois théoriquement passer le nom d'un produit et sa référence.

    mais la ou je me pose une question, j'ai 2 produits, mais comment on peut distinguer le fait que j'ai ajouter dans le panier le produit 1 ou le produits 2 ?



    en espérant avoir été assez clair.

  20. #20
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Non tu es tout sauf clair.

    C'est quoi cette ligne ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ajoutpanier.AjoutPanierAsync(InfoPageConnexion.TextBox_Login.Text, Today.Date, ((Button)sender).Name = "NomItem", ((Button)sender).Name = "RefItem");
    Pourquoi tu mets un = ?

    Cette ligne
    ((Button)sender).Name
    te donne juste le nom de ton bouton.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 5
    Dernier message: 15/04/2005, 14h22

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