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 :

StackPanel dynamique dans le Grid d'un TabItem [Débutant]


Sujet :

Windows Presentation Foundation

  1. #1
    Membre régulier
    Femme Profil pro
    Elève Ingénieur à l'ENSIAS
    Inscrit en
    Février 2013
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Elève Ingénieur à l'ENSIAS

    Informations forums :
    Inscription : Février 2013
    Messages : 66
    Points : 87
    Points
    87
    Par défaut StackPanel dynamique dans le Grid d'un TabItem
    bonjour,

    L'image jointe ci-dessous représente un menu -incomplet- d'une application. Ma fenêtre comporte un TabControl dont les TabItem sont des espaces avec un menu. ma question est la suivante : le Grid de l'espace -TabItem- choisi doit contenir un Panel dynamique selon le choix du menu. Comment je peux réaliser ça ? est-ce que je fais autant de Panel que les choix du menu, en les superposant et en les rendant tous invisibles jusqu'à la selection du choix ? je souhaite qu'il y'aura une meilleure solution.

    Merci d'avance pour votre aide précieuse :-)

    Nom : menu_2A.png
Affichages : 233
Taille : 45,9 Ko

  2. #2
    Expert confirmé
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Points : 4 062
    Points
    4 062
    Par défaut
    Pour cette zone tu peux utiliser un ContentControl et en fonction du choix tu assignes le Content différemment.
    Formateur expert .Net/C#/WPF/EF Certifié MCP disponible sur Paris, province et pays limitrophes (enseignement en français uniquement).
    Mon blog : pragmateek.com

  3. #3
    Membre régulier
    Femme Profil pro
    Elève Ingénieur à l'ENSIAS
    Inscrit en
    Février 2013
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Elève Ingénieur à l'ENSIAS

    Informations forums :
    Inscription : Février 2013
    Messages : 66
    Points : 87
    Points
    87
    Par défaut
    Merci pour votre réponse,

    S'il vous plait comment est ce que je peux assigner un content différemment pour chaque choix du menu ? j'ai lu quelque part qu'il faut utiliser des UserControl et puis les affecter dynamiquement au content du ContentControl.

    Je sais pas comment faire mais j'ai essayé quand même d'ajouter un Contrôle Utilisateur au projet, j'ai mis dedans un label juste pour le test et puis je l'ai affecté au Content du ContentControl comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      this.contentControl.Content = new MachinesUserControl();
    mais ça n'a pas marché

    je voudrais savoir déjà est ce que l'idéee d'utiliser des UserControl est bonne ? si c'est le cas pourquoi ça ne marche pas. sinn est-ce que vous pouvez me proposer une solution meilleure ?

    merci

  4. #4
    Expert confirmé
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Points : 4 062
    Points
    4 062
    Par défaut
    Oui c'est exactement ce qu'il faut faire dans l'idéal.

    Est-ce que le ContentControl a la bonne taille, i.e. il s'étale bien ?

    Sinon montre nous un peu plus de code, e.g. la partie du XAML où tu déclares le ContentControl.
    Formateur expert .Net/C#/WPF/EF Certifié MCP disponible sur Paris, province et pays limitrophes (enseignement en français uniquement).
    Mon blog : pragmateek.com

  5. #5
    Membre régulier
    Femme Profil pro
    Elève Ingénieur à l'ENSIAS
    Inscrit en
    Février 2013
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Elève Ingénieur à l'ENSIAS

    Informations forums :
    Inscription : Février 2013
    Messages : 66
    Points : 87
    Points
    87
    Par défaut
    Voilà la partie du code pour l'insertion du ContentControl dans le fichier MainWindow.XAML :

    Code xaml : 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
    <Window x:Class="MenuTab.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            Title="MainWindow" Height="600" Width="1300">
           <Grid >
                <TabControl HorizontalAlignment="Left" Height="509" Margin="10,80,0,0" VerticalAlignment="Top" Width="1260">
                         <TabItem  Margin="0,27,-12,-26" Width="50" Padding="0" Height="45">
                                 <!-- le header -->
                                 <TabItem.header />
                                 <Grid >
     
                                          <!-- mon menu -->
                                           <StackPanel />
     
                                          <!--le ContentControl-->
                                          <ContentControl  x:Name="contentControl" HorizontalAlignment="Left" Height="114" Margin="10,126,0,0" VerticalAlignment="Top" Width="730"/>
     
                                 </Grid>
                      </TabItem>
     
            </TabControl>
         </Grid>
    </Window>

    et dans mon UserControl :

    Code xaml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <UserControl x:Class="MenuTab.MachinesUserControl"
                 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
                 xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
                 mc:Ignorable="d" 
                 d:DesignHeight="100" d:DesignWidth="300">
        <Grid>
            <TextBlock HorizontalAlignment="Left" Height="66" Margin="51,10,0,0" TextWrapping="Wrap" Text="MACHINES" VerticalAlignment="Top" Width="181"/>
        </Grid>
    </UserControl>

  6. #6
    Expert confirmé
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Points : 4 062
    Points
    4 062
    Par défaut
    Ce qui me semble suspect c'est que tu as spécifié une taille sur le TabItem : Width="50" Padding="0" Height="45".

    Retire là, ça devrait déjà aller mieux.

    Et plus généralement en WPF tu ne devrais pas avoir besoin de spécifier autant de tailles en dur.
    Il faut plutôt jouer avec la mise en page qui est bien plus aisée qu'avec WinForms.
    Formateur expert .Net/C#/WPF/EF Certifié MCP disponible sur Paris, province et pays limitrophes (enseignement en français uniquement).
    Mon blog : pragmateek.com

  7. #7
    Membre régulier
    Femme Profil pro
    Elève Ingénieur à l'ENSIAS
    Inscrit en
    Février 2013
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Elève Ingénieur à l'ENSIAS

    Informations forums :
    Inscription : Février 2013
    Messages : 66
    Points : 87
    Points
    87
    Par défaut
    Merci ça a finalement marché. j'ai juste un dernière question si vous permettez, pourquoi utilise t-on un ContentControl et non pas un StackPanel ? merci

  8. #8
    Expert confirmé
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Points : 4 062
    Points
    4 062
    Par défaut
    Tu pourrais en effet utiliser un autre conteneur mais le ContentControl est plus "neutre", son rôle est juste d'encapsuler un autre élément, c'est un placeholder.
    De plus il permet l'application automatique de templates selon le type de Content via ContentTemplate et ContentTemplateSelector.
    Formateur expert .Net/C#/WPF/EF Certifié MCP disponible sur Paris, province et pays limitrophes (enseignement en français uniquement).
    Mon blog : pragmateek.com

  9. #9
    Membre régulier
    Femme Profil pro
    Elève Ingénieur à l'ENSIAS
    Inscrit en
    Février 2013
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Elève Ingénieur à l'ENSIAS

    Informations forums :
    Inscription : Février 2013
    Messages : 66
    Points : 87
    Points
    87
    Par défaut
    D'accord merci infiniment pour votre aide, ça m'a aidé énormément, merci.

  10. #10
    Expert confirmé
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Points : 4 062
    Points
    4 062
    Par défaut
    Content d'avoir pu t'aider.

    Bonne continuation.
    Formateur expert .Net/C#/WPF/EF Certifié MCP disponible sur Paris, province et pays limitrophes (enseignement en français uniquement).
    Mon blog : pragmateek.com

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

Discussions similaires

  1. ma Form est lente à charger à cause des stackpanel dans mon grid apparement
    Par slacky dans le forum Windows Presentation Foundation
    Réponses: 6
    Dernier message: 21/12/2011, 14h17
  2. [2.5.1] Grid dynamique dans un rapport
    Par reportPer dans le forum BIRT
    Réponses: 47
    Dernier message: 05/03/2010, 18h36
  3. [Dojo] Afficher des champs dynamiques dans un grid
    Par DevBetty dans le forum Bibliothèques & Frameworks
    Réponses: 2
    Dernier message: 27/10/2009, 11h50
  4. Réponses: 6
    Dernier message: 24/09/2004, 14h10
  5. [D7] Tableaux dynamiques dans un record
    Par bobby-b dans le forum Langage
    Réponses: 2
    Dernier message: 01/07/2004, 00h23

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