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 :

Menu avec contenu dynamique et à plusieurs niveaux [MVVM]


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 242
    Par défaut Menu avec contenu dynamique et à plusieurs niveaux
    Bonjour,

    J'ai actuellement un problème pour créer un menu WPF "dynamique", dans le sens où une partie de son contenu est variable.
    C'est un menu pour lancer un certain nombre de jeux.

    Je voudrais aboutir au menu suivant:

    Mes jeux
    > Jeu 1
    > Jeu 2
    > ...
    > Jeu N
    Séparateur
    > Quitter

    Jusque là, j'ai à peu près réussi. Mes binding fonctionnent tous correctement.

    Et pour chaque jeu, il y aurait un sous-menu, qui est lui toujours le même.
    > Nouvelle partie
    > Préférences
    C'est sur cette partie que je bloque : je n'arrive pas à définir le sous-menu de chaque jeu dans mon code, je ne vois pas comment faire.

    Voici mon code XAML:
    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
     
        <Menu>
            <Menu.Resources>
                <CollectionViewSource x:Key="GamesList" Source="{Binding GamesModuleVM}" />
            </Menu.Resources>
     
            <MenuItem>
                <MenuItem.Header>
                    <TextBlock Text="Mes jeux" />
                </MenuItem.Header>
                <MenuItem.ItemContainerStyle>
                    <Style>
                        <Setter Property="MenuItem.Header" Value="{Binding ApplicationGame.Name}" />
                        <Setter Property="MenuItem.Icon" Value="{Binding ApplicationGame.SmallImage}" />
                        <Setter Property="MenuItem.Command" Value="{Binding StartCommand}" />
                        <!--<Setter Property="MenuItem.Items">
                            <Setter.Value>                            
                                <MenuItem Header="Nouvelle partie" Command="{Binding StartCommand}" />
                                <MenuItem Header="Préférences" Command="{Binding EditSettingsCommand}" />
                            </Setter.Value>
                        </Setter>-->
                    </Style>
                </MenuItem.ItemContainerStyle>
                <MenuItem.ItemsSource>
                    <CompositeCollection>
                        <CollectionContainer Collection="{Binding Source={StaticResource GamesList}}" />
                        <Separator />
                        <MenuItem Header="Quitter" />
                    </CompositeCollection>
                </MenuItem.ItemsSource>
            </MenuItem>
        </Menu>
    Pouvez-vous me donner quelques pistes ?

    Merci !

  2. #2
    Membre du Club
    Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2013
    Messages : 9
    Par défaut
    Je pense que tu peux utiliser un HierarchicalDataTemplate, ça donnerait quelque-chose comme ça :

    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
     
    <Menu>
    	<MenuItem Header="Mes jeux"  ItemsSource="{Binding GamesModuleVM}">
    		<MenuItem.ItemTemplate>
    			<HierarchicalDataTemplate>
    				<TextBlock Text="{Binding ApplicationGame.Name}" />
                                    <Image Source="{Binding ApplicationGame.SmallImage}" />
                                     <HierarchicalDataTemplate.ItemTemplate>
                                              <TextBlock Text="Nouvelle partie" Command="{Binding StartCommand}" />
                                              <TextBlock Text="Préférences" Command="{Binding EditSettingsCommand}" />
                                     </HierarchicalDataTemplate.ItemTemplate>
    			</HierarchicalDataTemplate>
    		</MenuItem.ItemTemplate>
    	</MenuItem>
    </Menu>

  3. #3
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 242
    Par défaut
    Je note bien l'idée des Hierarchicale DataTemplate. Ca doit surement être un truc comme ça, mais même avec ton code, je n'arrive pas à mes fins (ça ne compile hélas pas, et il n'y a plus non plus la partie en dessous avec le "quitter").

    As-tu des idées pour comment corriger?

  4. #4
    Membre du Club
    Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2013
    Messages : 9
    Par défaut
    Ha ouais, désolé, c'était peut-être une fausse-piste.
    Je vais changer mon fusil d'épaule...

    Dans ton code, essaies de remplacer toute ta partie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <MenuItem.ItemContainerStyle>...</MenuItem.ItemContainerStyle>
    par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <MenuItem.ItemTemplate>
        <DataTemplate>
            <MenuItem Header="{Binding ApplicationGame.Name}" Icon="{Binding ApplicationGame.SmallImage}" Command="{Binding StartCommand}">
    		<MenuItem Header="Nouvelle partie" Command="{Binding StartCommand}" />
    		<MenuItem Header="Préférences" Command="{Binding EditSettingsCommand}" />
    	</MenuItem>
        </DataTemplate>
    </MenuItem.ItemTemplate>

  5. #5
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 242
    Par défaut
    Ca compile, mais ça ne fait pas vraiment ce qu'il faut .
    Il m'a mis un MenuItem à l'intérieur du menuItem déjà prégénéré (ce qui est normal je pense). Et quand je clique sur la flèche du sous-menu, rien ne s'affiche.

    D'autres idées ?

  6. #6
    Membre du Club
    Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2013
    Messages : 9
    Par défaut
    J'avoue que je sèche un peu.
    Ma première idée, de passer par un hierarchicalDatatemplate, se basait sur ce qu'on peut faire avec un contrôle treeview, je pensais pouvoir transposer ça à un contrôle menu, mais apparemment ce n'est pas si simple.

    Regarde sur ce lien, tu pourras peut-être dégager une piste :
    http://blogs.msdn.com/b/mikehillberg...p-by-step.aspx

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

Discussions similaires

  1. [XL-2003] Pied et en-tete de page, dans une page avec contenue dynamiques
    Par elgaied dans le forum Excel
    Réponses: 7
    Dernier message: 19/04/2012, 16h46
  2. Réponses: 0
    Dernier message: 09/04/2012, 19h43
  3. [Flex3] Affichage de Popup avec contenu dynamique
    Par Kantizbak dans le forum Flex
    Réponses: 0
    Dernier message: 20/05/2011, 10h53
  4. Liste déroulante avec contenu dynamique
    Par sdesbure dans le forum Ruby on Rails
    Réponses: 9
    Dernier message: 12/01/2008, 13h24
  5. Taille de frame avec contenu dynamique
    Par mioux dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 11/10/2007, 17h31

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