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

C# Discussion :

Application WPF - Structure


Sujet :

C#

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 256
    Points : 74
    Points
    74
    Par défaut Application WPF - Structure
    Bonjour,
    Je souhaiterais réaliser une application WPF, qui comporte un menu en haut, une toolbar juste au dessous, et le reste de l'espace est l'application en elle-même.
    J'ai réussi a placer mon menu, créer des items... mais pour ce qui est de la toolbar je ne sait pas du tout comment faire (méthode graphique ?). Pas moyen d'ajouter d'items ou de bouton imprimer par exemple.
    Mais ma question se porte vraiment sur le reste de l'application : Dans l'espace qu'il reste, je vais avoir des textbox, list, etc... et je voudrais que l'interface change en fonction de ce que je vais cliquer dans le menu. Par exemple, si j'ai un menu "client", et je clique sur le sous-menu "ajouter un client", je voudrais voir le formulaire dans l'espace qui reste. Une fois que j'ai cliqué sur "ok" pour terminer le formulaire, je souhaiterais revenir a ma liste des clients à la place de ce formulaire. Je souhaite une seule "form" et tout se passe dedans.

    S'il vous plait, comment faire ?
    Je vous remercie par avance.

  2. #2
    Membre expert


    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2006
    Messages : 970
    Points : 3 304
    Points
    3 304
    Par défaut
    Bonjour,

    Une possibilité je pense est de créer des contrôles utilisateurs (un contrôle par "écran" qui serait en fait un panel avec tous les textbox,boutons etc) et que tu créerais dans l'événement correspondant aux différents menus.

    Donc en résumé, si 3 points de menu -> 3 contrôles utilisateurs que tu ajoutes dynamiquement au panel central (ou au niveau du grid vu qu'en WPF) de ton application.
    Articles sur les technologies .NET

    Une réponse vous a aidé ? utilisez le bouton

    Votre problème est résolu ? utilisez le bouton

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 256
    Points : 74
    Points
    74
    Par défaut
    Merci, je peux creuser cette idée en effet, mais... qu'est ce que le grid ? Je n'utilise pas cet élément parce que je n'y vois pas son intérêt...

  4. #4
    Membre expert


    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2006
    Messages : 970
    Points : 3 304
    Points
    3 304
    Par défaut
    Le "Grid" fait partie des différents contrôles mis à disposition pour disposer tes composants graphiques en WPF sur une fenêtre. Un peu comme en java si tu connais un peu ou il travaille par panel.

    Tu as les "Grid", "StackPanel", "DockPanel" , ... (Une petite recherche sur google ou sur le site pourra t'apporter plus d'informations).

    Je réponds à ta question sur le "Grid" par un exemple pour te prouver qu'il sert à quelque chose ;-)

    C'est d'ailleurs un des contrôles les plus puissants selon moi. Dans le sens ou tu peux grâce à lui diviser ton espace en colonne / ligne un peu comme dans les tableaux HTML (ou imagine un tableur Excel par exemple).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <Grid>
       <Grid.ColumnDefinitions>
          <ColumnDefinition Width="50"></ColumnDefinition>
          <ColumnDefinition></ColumnDefinition>
       </Grid.ColumnDefinitions>
     
       <Grid.RowDefinitions>
           <RowDefinition Height="28"></RowDefinition>
       </Grid.RowDefinitions>
     
    <Label Grid.Column="0" Content="Owner :"  Height="23" HorizontalAlignment="Stretch" Name="lblOwner" VerticalAlignment="Top" />
    <ComboBox Grid.Column="1" Height="23" HorizontalAlignment="Stretch" Name="cboOwner" VerticalAlignment="Top" SelectionChanged="cboOwner_SelectionChanged" />
    </Grid>
    Si dessus tu verras que je définis une grille de 2 colonnes et une ligne. Je donne comme largeur à ma première colonne 50 (donc lors de resize de la fenêtre cette colonne restera de largeur fixe).

    Ensuite j'ajoute un label dans la première colonne de la grille à la première ligne et une combobox dans la 2ème colonne. Ce qui aura pour effet lors d'un resize que ce soit la combobox qui change de taille.

    Le code de ma fenêtre complet :

    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
    <UserControl x:Class="DbViewer.UserControls.ucLstInfo"
                 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="408" d:DesignWidth="342">
        <Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Name="grdGauche">
            <DockPanel Grid.Column="0"  VerticalAlignment="Stretch">
                <GroupBox DockPanel.Dock="Top" Header="Filtre :" Name="grpFiltre" Height="50"  VerticalAlignment="Top">
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="50"></ColumnDefinition>
                            <ColumnDefinition></ColumnDefinition>
                        </Grid.ColumnDefinitions>
    
                        <Grid.RowDefinitions>
                            <RowDefinition Height="28"></RowDefinition>
                        </Grid.RowDefinitions>
                        <Label Content="Owner :"  Height="23" HorizontalAlignment="Stretch" Name="lblOwner" VerticalAlignment="Top" />
                        <ComboBox Grid.Column="1" Height="23" HorizontalAlignment="Stretch" Name="cboOwner" VerticalAlignment="Top" SelectionChanged="cboOwner_SelectionChanged" />
                    </Grid>
                </GroupBox>
    
                <GroupBox DockPanel.Dock="Top"  Header="Info :" Name="grpTable"  VerticalAlignment="Stretch">
                    <ListBox Name="lstInfo" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" SelectionChanged="lstInfo_SelectionChanged" />
                </GroupBox>
            </DockPanel>
        </Grid>
    </UserControl>
    En gras l'exemple de code que je t'ai donné en début de réponse qui donne la partie que j'ai encadrée dans la fenêtre dont je te joins la capture d'écran.
    Images attachées Images attachées  
    Articles sur les technologies .NET

    Une réponse vous a aidé ? utilisez le bouton

    Votre problème est résolu ? utilisez le bouton

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 256
    Points : 74
    Points
    74
    Par défaut
    D'accord merci, c'est très sympa de ta part.
    Ok je comprends je connais JAVA.

    J'ai une autre question : je serialize en binaire tous mes objets pour les récupérer ensuite.
    Prenons une classe "clients" par exemple : je souhaite récupérer tous mes objets en ligne dans un datagrid, et à côté, j'ai un formulaire (labels + textboxes).

    Je souhaite que lorsque je clique sur une ligne dans mon datagrid, ça me pré-remplisse ce formulaire, pour que je puisse ensuite le modifier, et faire apply.

    Je sais ce qu'il faut faire : un DATASOURCE, grace à l'onglet a gauche...
    Mais je n'arrive pas a remplir ni mon datagrid, ni mes textbox, même si je fais un glisser-déposer qui me crée automatiquement mon label / textbox.

    Comment ça marche please ?
    Merci encore.

Discussions similaires

  1. Design d'application WPF
    Par adiekmann dans le forum Windows Presentation Foundation
    Réponses: 5
    Dernier message: 25/04/2008, 17h41
  2. Modifier la taille d'une application WPF
    Par talu3000 dans le forum Windows Presentation Foundation
    Réponses: 4
    Dernier message: 25/12/2007, 12h30
  3. Lien IE sur application WPF
    Par oyigit dans le forum Windows Presentation Foundation
    Réponses: 1
    Dernier message: 17/10/2007, 16h04
  4. [WPF][VB][Débutant]Création d'une application WPF
    Par actionthomas dans le forum Windows Presentation Foundation
    Réponses: 1
    Dernier message: 21/08/2007, 18h25
  5. Réponses: 12
    Dernier message: 19/06/2007, 10h24

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