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

Langages Discussion :

Bonnes pratiques création de forms WPF


Sujet :

Langages

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 10
    Points : 6
    Points
    6
    Par défaut Bonnes pratiques création de forms WPF
    Bonjour à tous !

    Je ne suis pas débutant en c#, mais je ne touche jamais aux interaces d'habitude (backend mon amour )
    Bref ... pour un projet avec un ami, me voilà obliger de toucher à ces vilaines interfaces.

    Autant je peux m'en sortir pour placer mes boutons, tripoter du XAML et autre... autant que je suis perdu quand il s'agit de linker mes différentes interfaces.

    Je suppose que hider une form et en ouvrir une autre c'est "so 1990" donc on va oublier.. Donc c'est quoi la bonne façon de faire pour que ce soit un peu dynamique ?
    On efface tout et on load les composants suivants ?

    Pour donner une idée de ce que je veux faire, c'est un peu comme une appli. Pas d'onglets, un clique sur le bouton et ca nous envoie vers la page demandée.
    On retourne au menu et on recommence. Rien de compliqué ...

    J'ai cherché des tutos mais on va dire que les tutos retournent surtout des trucs pour ultra débutant ou on se contente d'une seule form pour faire une calculatrice, je cherche le step d'après
    si vous avez soit un conseil, soit un bon tuto je suis preneur !

    Merci d'avance !

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 150
    Points : 25 066
    Points
    25 066
    Par défaut
    il doit y avoir plusieurs manières de faire
    en ce moment je suis sur le contentpresenter, qui comme tous les controles a une propriété content
    et donc dans ce content tu mets n'importe quoi, de préférence une instance de classe non graphique, et tu rajoutes un DataTemplate qui explique comment afficher cette instance
    si possible en mettant du MVVM mais pas forcément si c'est peu de choses et un petit projet

    dans le principe si tu as une classes menumachin qui une propriété titre, et une propriété trucs de type List<truc> sachant que truc a des propriétés (nom, prenom ...) et une méthode :
    Code xaml : Sélectionner tout - Visualiser dans une fenêtre à part
    <contentpresenter Content="{Binding menuAffiché}"/>
    donc sur le clic d'un bouton tu change la propriété menuaffiché, et ca change l'interface automatiquement (si possible sans utiliser d'event ^^)

    et des datatemplates
    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
    <DataTemplate DateType ou x:key MenuMachin>
      <Grid>
          <!-- define rows et cols-->
          <TextBlock Text="{Binding Titre}"/>
          <ItemsControl ItemsSource="{Binding Trucs}">
              <ItemsControl.ItemTemplate>
                  <DataTemplate>
                       <StackPanel>
                            <TextBlock Text="{Binding Nom}"/>
                            <TextBlock Text="{Binding Prenom}"/>
                            <Button Text="Supprimer" Command="{Binding DeleteCommand}"/>
                       </StackPanel>
                  </DataTemplate>
              </ItemsControl.ItemTemplate>
          </ItemsControl>
      </Grid>
    </DataTemplate>

    voilà un exemple, il faut donc voir les bindings, les templates, DataContext, INotifyPropertyChanged, la classe RelayCommand etc...
    et en wpf ObservableCollection est mieux que List, modifier la collection modifie automatiquement l'interface

    je sais plus si c'est via datatype, x:datatype ou x:key mais y a moyen de dire que ce datatemplate est à utiliser automatiquement quand un control a une instance d'un certain type
    ce qui permet de mettre les datatemplates dans app.xaml (ou dans des dictionnaires de ressources différents mergés)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    Salut, merci pour ta réponse.

    Il faut que je me renseigne sur les objets que tu cites, mais si je comprend bien l'idée, c'est en gros

    Entry
    => Load de mes éléments de la "page d'accueil"
    => clic bouton
    => Sweep des éléments
    => load des éléments de la "page de destination"

    en "gros" c'est comme si on changeait d'onglet (c'est d'ailleurs un peu ce quil doit faire en behind).


    Et d'un point de vue design, comment on s'y prend pour faire ca proprement avec le designer ? tout doit se superposer assez dégueulassment ?

  4. #4
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 150
    Points : 25 066
    Points
    25 066
    Par défaut
    pas compris, mais rien ne se superpose

    c'est juste que tu mettre un objet non graphique dans un control
    tu peux définir comment afficher cette classe (avec tout une arborescence de controles si nécessaires)
    si tu changes l'instance de la classe non graphique dans le controle (y compris en mettant quelque chose d'un autre type) alors toute l'arborescence de controle est retirée pour laisser place à la nouvelle
    mais à aucun moment on ne pose les controles à la main comme en windows forms ou autre, on décrit avec du xaml comment doit s'afficher un truc, et c'est wpf qui s'occupe de poser les objets nécessaire selon le truc à afficher au moment où il doit en afficher un (pas en mode design donc)


    mais bon en relisant ton post de départ je viens de voir que tu ne voulais pas que le menu soit visible tout le temps comme avec des onglets, mais bien un bouton retour
    et dans ce cas tu peux oublier ce que j'ai dit et faire une appli de type navigation, ou utiliser un frame (conteneur de page)
    après tu fais toutes tes pages tranquillement
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    Par se superpose je voulais parler dans le designer. Tes différentes pages (logiques) se retrouvent dans une seule fenêtre (physique) donc je me posais la question de designer tout ça "visuellement".

    Du coup en me basant sur tes orientations, je suis tombé sur des infos interessantes sur les différentes façon de "naviguer" sur stackoverflow (je sais plus si j'ai le droit de mettre le lien je poste pas souvent mais je croit pas avoir vu que c'était interdit dans les règles. Je le retire si besoin) => http://stackoverflow.com/questions/1...wpf-navigation

    Il y a notament un exemple qui m'a l'air assez complet avec ta méthode et une bonne explications pour les autres.

    Je regarde ca dès que j'ai un peu de temps pour voir la méthode qui ira bien avec mon projet, mais je pense que c'est bien celle qui tu me proposes que je voulais connaitre.

Discussions similaires

  1. Création d'un batch - bonne pratique
    Par max33370 dans le forum Salesforce.com
    Réponses: 1
    Dernier message: 15/05/2014, 18h37
  2. Réponses: 3
    Dernier message: 22/09/2011, 14h56
  3. Réponses: 3
    Dernier message: 22/02/2010, 11h40
  4. Bonnes pratiques pour la création d'IHM
    Par Tuttu dans le forum Windows Forms
    Réponses: 15
    Dernier message: 13/10/2009, 14h55

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