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 :

MenuItem et Naviguation d'ecran


Sujet :

Windows Presentation Foundation

  1. #1
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2004
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2004
    Messages : 27
    Par défaut MenuItem et Naviguation d'ecran
    Bonjour,

    Je commence à faire une application en WPF et j'aimerai naviguer dans mon application avec un menuitem, je clic sur page1 et ça me charge le usercontrol page1.xaml etc.

    Mais je n'arrive pas à faire ça! je cherche sur internet mais je ne trouve aucun exemple qui corresponde à mes besoins.

    En windowsform je mettais un conteneur ou et je chargé dedans mes usercontrol.

    Comment faire pour naviguer dans une application wpf avec un menuitem?

    Merci

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2009
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2009
    Messages : 81
    Par défaut
    Tu souhaites respecter au mieux le pattern MVVM ?

  3. #3
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2004
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2004
    Messages : 27
    Par défaut
    ce n'est pas une obligation mais si possible pourquoi pas essayer le pattern MVVM.

  4. #4
    Membre éprouvé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2009
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2009
    Messages : 81
    Par défaut
    Voici un peu de documentation :

    en anglais

    C'est un exemple d'implémentation pour les MessageBox, mais techniquement c'est la même pour des fenêtres.

    En gros, il faut passer par un Service d'ouverture de fenêtre. Ta VM appellera ensuite les méthodes d'ouverture via une interface, sans connaitre réellement la logique d'une ouverture de fenêtre.

    C'est la manière propre de le faire.

    La manière moins "propre", et c'est celle que je mets en place dans les petites applications pour tester des trucs :

    Dans la MainWindow :

    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
     
      <Grid>
            <Grid.RowDefinitions>
                <RowDefinition  Height="40"/>
                <RowDefinition Height="1*"/>
            </Grid.RowDefinitions>
     
            <Border >
                <Border.Background>
                    <ImageBrush ImageSource="resources/banniere.jpg" />
                </Border.Background>
     
                <!--Menu de base de l'application.-->
                <Menu IsMainMenu="True" VerticalAlignment="Center" Background="{x:Null}" >
     
                   <MenuItem Header="Test" Click="Bt_Test_Click" />
     
     
                </Menu>
            </Border>
     
            <Grid x:Name="PART_Content" Grid.Row="1" />
     
        </Grid>
    Ici, deux choses :

    -La structure. On définit dans la grille de base une ligne pour le menu, et une autre ligne dans laquelle on met la grille qui affichera le contenu.

    -Le MenuItem déclare un gestionnaire d'évènement sur son OnClick.

    Dans le code Behind :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    private Ct_Test ctTest;
     
            private void Bt_Test_Click(object sender, RoutedEventArgs e)
            {
     
                PART_Content.Children.Clear();
                if (CtTest== null)
                {
                    ctTest= new Ct_Test();
                }
                PART_Content.Children.Add(ctTest);
     
            }
    En gros, on instancie la nouvelle fenêtre, ou le nouveau contrôle utilisateur s'il n'existe pas, et on l'ajoute aux enfants de la grille de contenu.

    Voilà, c'est pas élégant, mais ça fonctionne. Je fais ça uniquement pour les petits projets perso, aucunement en production. Il faut préférer le premier pattern proposé pour de la production.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 52
    Par défaut
    Bonjour,
    Si je comprend bien tu veux rester dans la même fenêtre dans ce cas là je viens juste de poster un exemple sur cette discussion

    C'est un peu le même principe sauf que ton MenuItem sera relié à une command.
    Command qui va instancier le bon ViewModel, le contentControl se chargera alors d'afficher l'UserControl correspondant

  6. #6
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2004
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2004
    Messages : 27
    Par défaut
    Merci,
    j'ai de quoi travailler!

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

Discussions similaires

  1. Ecran tactile
    Par fabricep dans le forum Delphi
    Réponses: 9
    Dernier message: 16/09/2006, 12h40
  2. [VB6] Touche impr écran
    Par SpaceFrog dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 12/11/2002, 07h38
  3. Comment faire pour mettre l'ecran en veille ?
    Par March' dans le forum MFC
    Réponses: 6
    Dernier message: 29/08/2002, 14h25
  4. Copier et afficher une copie d'ecran
    Par Bobx dans le forum Langage
    Réponses: 6
    Dernier message: 02/08/2002, 22h20
  5. [TP]lire une ligne de l'ecran et la stocker dans une chaine
    Par Bleuarff dans le forum Turbo Pascal
    Réponses: 26
    Dernier message: 02/07/2002, 10h08

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