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

Windows Presentation Foundation Discussion :

Design d'application WPF


Sujet :

Windows Presentation Foundation

  1. #1
    Membre du Club
    Homme Profil pro
    Business Developer chez SoftFluent
    Inscrit en
    Juin 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Business Developer chez SoftFluent
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 38
    Points : 51
    Points
    51
    Par défaut Design d'application WPF
    Bonjour,

    J'ai ma main window qui contient un stack panel avec une liste de bouton représentant un menu:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <StackPanel Grid.Column="0" Grid.Row="1" Button.Click="Button_Click">
        <Button>Home</Button>
        <Button>Menu</Button>
    ...
    </StackPanel>
    A chaque fois que je clique sur un des boutons j'aimerai instancié un nouveau user control de contenu et l'inserer dans une grid.

    Donc

    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
     
    if (ContentGrid.Children.Count == 1)
    {
        ContentGrid.Children.RemoveAt(0);
    }
    Button currentButton = (Button)e.OriginalSource;
    if ((string)currentButton.Content == "Home")
    {
        ContentGrid.Children.Add(new Category.Home());
    }
    else if ((string)currentButton.Content == "Menu")
    {
        ContentGrid.Children.Add(new Category.Menu());
    }
    ....
    J'aimerai trouvé une solution pour éviter ces répétitions de if, else if, ... pour chaques boutons de mon menu.

    Y-a-il une méthode propre pour gérer ce cas la?

    Bonne journée et merci,

  2. #2
    Membre expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Points : 3 015
    Points
    3 015
    Par défaut
    Il y a le switch case...

    Par contre cette méthode (de regarder le texte du bouton) provoquera des erreurs le jour où tu voudras par exemple passer ton application dans un autre langage

    Une solution : utilise plutôt la propriété Tag du bouton

  3. #3
    Membre du Club
    Homme Profil pro
    Business Developer chez SoftFluent
    Inscrit en
    Juin 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Business Developer chez SoftFluent
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 38
    Points : 51
    Points
    51
    Par défaut
    Le switch case reste tout de meme lourd lorsque j'aurai 15 boutons. non?

  4. #4
    Membre expérimenté Avatar de davcha
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 258
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 258
    Points : 1 539
    Points
    1 539
    Par défaut
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <StackPanel Grid.Column="0" Grid.Row="1" Button.Click="Button_Click">
        <Button Tag="{x:Type local:Category+Home}">Home</Button>
        <Button Tag="{x:Type local:Category+Menu}">Menu</Button>
    ...
    </StackPanel>
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    if (ContentGrid.Children.Count == 1)
    {
        ContentGrid.Children.RemoveAt(0);
    }
    Button currentButton = (Button)e.OriginalSource;
    ContentGrid.Children.Add((Le_Cast_Qui_Va_Bien)Activator.CreateInstance((Type)currentButton.Tag));
    ....

  5. #5
    Membre du Club
    Homme Profil pro
    Business Developer chez SoftFluent
    Inscrit en
    Juin 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Business Developer chez SoftFluent
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 38
    Points : 51
    Points
    51
    Par défaut
    Je viens de tester.

    C'est parfait.

    Merci beaucoup,

  6. #6
    Membre éprouvé Avatar de anthyme
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 559
    Points : 1 257
    Points
    1 257
    Par défaut
    J'ai tester en silverlight avec ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <Button Tag="{x:Type local:Construct}" Click="Button_Click"/>
    Mais cela génére une exception a l éxécution et invalid attribut value dans l IDE ?

    C'est normal ?

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

Discussions similaires

  1. Réhostez le designer de workflow dans vos applications WPF
    Par Jérôme Lambert dans le forum Windows Workflow Foundation
    Réponses: 2
    Dernier message: 30/08/2010, 09h18
  2. Réhostez le designer de workflow dans vos applications WPF
    Par Jérôme Lambert dans le forum Windows Presentation Foundation
    Réponses: 0
    Dernier message: 30/05/2009, 14h04
  3. Question sur le design d'application
    Par atoutsweb dans le forum Windows Forms
    Réponses: 13
    Dernier message: 01/05/2007, 14h16

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