locked
[WP7.5] création de bouton en code behind RRS feed

  • Question

  • Bonjour,

    J'ai une petite question concernant la création de bouton en c#. Je cherche a créer un tableau de bouton.

                int i = 0;
                Button[] TabButton = new Button[200];
    
                        foreach (object y in e.Result)
                        {
                            TabButton[i] = new Button();
                            TabButton[i].Content = (string)y;
                            TabButton[i].Width = 100;
                            TabButton[i].Height = 100;
                            TabButton[i].Visibility = System.Windows.Visibility.Visible;
                            
                            i++;
                        }
    


    Je voudrais que mes boutons s'affichent dans une grid :

                    <Grid Name="Grid1">
                        ...
                    </Grid>

    Mais rien ne s'affiche...

    Comment puis je faire ?

     

    Cordialement,

    NauD

    vendredi 30 décembre 2011 08:42

Réponses

  • Bonjour,

    Dans le code que tu viens de donner tes contrôles sont effectivement instanciés mais à aucun moment ils ne sont ajoutés à un contrôle parent (le mieux étant un StackPanel dans ta Grid) :)

    Exemple:

    <Grid x:Name="Grid1">
      <StackPanel x.Name="ContentPan" />
    </Grid>
    

    Puis dans ton code behind (je reprend ton exemple):

    int i = 0;
    Button[] TabButton = new Button[200];
    
    foreach (object y in e.Result)
    {
       TabButton[i] = new Button();
       TabButton[i].Content = (string)y;
       TabButton[i].Width = 100;
       TabButton[i].Height = 100;
       TabButton[i].Visibility = System.Windows.Visibility.Visible;
    
       ContentPan.Children.Add(TabButton[i]);
    
       i++;
    }
    

    vendredi 30 décembre 2011 08:53

Toutes les réponses

  • Bonjour,

    Dans le code que tu viens de donner tes contrôles sont effectivement instanciés mais à aucun moment ils ne sont ajoutés à un contrôle parent (le mieux étant un StackPanel dans ta Grid) :)

    Exemple:

    <Grid x:Name="Grid1">
      <StackPanel x.Name="ContentPan" />
    </Grid>
    

    Puis dans ton code behind (je reprend ton exemple):

    int i = 0;
    Button[] TabButton = new Button[200];
    
    foreach (object y in e.Result)
    {
       TabButton[i] = new Button();
       TabButton[i].Content = (string)y;
       TabButton[i].Width = 100;
       TabButton[i].Height = 100;
       TabButton[i].Visibility = System.Windows.Visibility.Visible;
    
       ContentPan.Children.Add(TabButton[i]);
    
       i++;
    }
    

    vendredi 30 décembre 2011 08:53
  • Merci beaucoup, sa fonctionne nikel ;-)
    vendredi 30 décembre 2011 11:57
  • Sans le tableau parce que vous ne connaissez pas au préalable le nombre attendu.

    Avec votre tableau vous risquez d'avoir un overflow si jamais votre nombre est plus grand que 200.

    int i = 0;
    for(; i < Size; i++)
    {
       Button b = new Button();

    //Le plus important c'est le nom  "NAME"

       b.name="Btn_"+I;
       b.Content = (string)y;  // Récupérer le contenu que vous voulez
       b.Width = 100;
       b.Height = 100;
       b.Visibility = System.Windows.Visibility.Visible;
       b.margin= new Trikness(0,0+Var,0,0); // Variable incrémentable.
       ContentPan.Children.Add(b);
    }


    Everything is possible, nothing is impossible. Just try and you will find that.
    • Proposé comme réponse Saâd HAFFAR mercredi 11 janvier 2012 22:34
    mercredi 11 janvier 2012 22:34
  • Le nombre ne pourra en aucun cas dépasser 200 : e.Result est une liste d'objet[] allimenté par une requete SQL dans mon web service.

    C'est le web service lui meme qui limite mon nombre de résultat, pour afficher les 200 suivants sur une autre page.

    Sur cette table, il n'y aura jamais d'insert. Le nombre de résultat est donc fixe.

     

    Cordialement,

    NauD

    jeudi 12 janvier 2012 09:39
  • Si tu le dis, mais moi je t'ai donné une solution qui marchera dans tous les cas. La solution précédente marchera aussi dans ton cas.
    Everything is possible, nothing is impossible. Just try and you will find that.
    mercredi 18 janvier 2012 16:48