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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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
    Y'a po en Silverlight (pas de FindName sur les Templates).
    on trouve quand meme une methode FindName, dans le code behind

  7. #7
    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.

  8. #8
    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

  9. #9
    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 ....

  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
    ((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.

  11. #11
    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.

  12. #12
    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
    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.
    oui, mais le nom du bouton je ne le veut pas.
    c'est le nom de mon textbox qui est dans 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
     
    <ListBox x:Name="ListeProduit" Width="800" Height="800">
                    <ListBox.ItemTemplate>
                        <DataTemplate x:Name="testtest">
                                <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 -->
                                    <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>
     
                        </DataTemplate>
                    </ListBox.ItemTemplate>
                </ListBox>
    par exemple le "TextBox" qui se nomme "NomIteme".

    merci de vos réponse.

  13. #13
    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
    Ben t'as qu'à récupérer ton objet métier.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TonObjetMetier item = ((Button)sender).DataContext as TonObjetMetier;
    Ensuite tu peux utiliser item.RefItem.

  14. #14
    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
    Ben t'as qu'à récupérer ton objet métier.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TonObjetMetier item = ((Button)sender).DataContext as TonObjetMetier;
    Ensuite tu peux utiliser item.RefItem.
    ok, je vais tester cela.

    merci de ta réponse!

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

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