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 :

Quel classe utiliser pour un tableau ?


Sujet :

Windows Presentation Foundation

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 113
    Points : 64
    Points
    64
    Par défaut Quel classe utiliser pour un tableau ?
    Bonjour,

    Je souhaiterais créer un tableau dont les lignes peuvent être sélectionnées. Quelle classe dois-je utiliser entre ListBox, ListView, ... ?
    Il me semblait plus approprié d'utiliser une ListBox mais je ne trouve pas comment créer plusieurs columns et un header.

    Sinon, existe-t-il quelque part des widgets tout fait (style, template, etc.) pour cela ?

    Merci.

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Février 2008
    Messages : 34
    Points : 29
    Points
    29
    Par défaut
    Bonjour,

    Si tu cherches à pouvoir mettres des colonnes, le listview me semble etre le plus adapté ..

    Sinon j'utiliserai le listbox.

  3. #3
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    ListView est en effet le meilleur choix

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 113
    Points : 64
    Points
    64
    Par défaut
    Ok merci. Je choisis donc une ListView dont la propriété View est représenté par un GridView.

    Je définis alors mes columns comme ci-dessous et je renseigne mon DataContext depuis le code behind.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <GridView.Columns>
                                <GridViewColumn Header="Column1"
                                                Width="50"
                                                DisplayMemberBinding="{Binding Att1}"
                                                HeaderContainerStyle="{StaticResource HeaderBoldStyle}"/>
                                <GridViewColumn Header="Column1"
                                                Width="50"
                                                DisplayMemberBinding="{Binding Att2}"
                                                HeaderContainerStyle="{StaticResource HeaderBoldStyle}"/>
    </GridView.Columns>
    Mon problème maintenant consiste à définir des styles pour les différents types de cellules de mon tableau. J'ai vu que je pouvais utiliser la propriété CellTemplate de GridViewColumn mais cela ne me convient pas car je voudrais pouvoir définir des styles génériques pour l'ensemble de mon application, quel que soit le tableau et surtout le nom de la variable bindé.

    N'y a-t-il donc pas un moyen d'utiliser le DisplayMemberBinding et de définir en plus un style (genre une propriété CellStyle) ?

    Merci.

  5. #5
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Citation Envoyé par Gob4 Voir le message
    J'ai vu que je pouvais utiliser la propriété CellTemplate de GridViewColumn mais cela ne me convient pas car je voudrais pouvoir définir des styles génériques pour l'ensemble de mon application,
    Et ? Il te suffit de crée un style/template au niveau des ressources de ton application puis de l'utiliser lors dans un CellTemplate

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 113
    Points : 64
    Points
    64
    Par défaut
    J'aimerais bien. malheureusement je bind un attribut de mon item comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DisplayMemberBinding="{Binding Att1}"
    imaginons que je crée un template au niveau ressource, cela donnerait ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <DataTemplate x:Key="Template1">
         <TextBlock Text="{Binding Att1}"/>
    </DataTemplate>
    Maintenant imaginons que je veuille utiliser ce template dans un autre tableau ou pour une autre colonne dont l'attribut à binder n'est pas "Att1" mais "Att2". Comment utiliser mon template ?

  7. #7
    Membre expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Points : 3 015
    Points
    3 015
    Par défaut
    Si tu veux éviter d'avoir à dupliquer le code du template, une solution est de faire ton template depuis le code behind, dans une fonction qui prend en paramètre le nom de l'attribut...


    Pour la création d'un template via le code tu peux faire...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
          DataTemplate myDataTemplate = new DataTemplate();
          FrameworkElementFactory myFrameworkElementFactory = new FrameworkElementFactory(typeof(TextBlock));
     
          Binding myBinding = new Binding("nomAttribut");
          myFrameworkElementFactory.SetBinding(TextBox.TextProperty, myBinding );
     
          myDataTemplate.VisualTree = myFrameworkElementFactory;

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 113
    Points : 64
    Points
    64
    Par défaut
    Effectivement c'est une solution, merci. Par contre comment puis-je faire pour appeler cette fonction depuis mon code XAML ?

    Sinon, n'y a-t-il pas un moyen de renseigner le DataContext de mon GridViewColumn, ce qui me permettrait de définir mon template simplement comme ci-dessous ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <DataTemplate x:Key="Template1">
         <TextBlock Text="{Binding}"/>
    </DataTemplate>
    Ainsi, le {Binding} ferait appel à l'élément contenu dans le DataContext de la cellule... enfin, d'après ce que j'ai compris de XAML.

  9. #9
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Le DataContext n'a rien à voir avec les Templates

Discussions similaires

  1. Réponses: 6
    Dernier message: 09/02/2011, 10h15
  2. Quel langage utiliser pour manipuler un tableau?
    Par floctc dans le forum Excel
    Réponses: 2
    Dernier message: 28/10/2009, 17h17
  3. Quel langage à utiliser pour un tableau de bord
    Par ludwigMatrix dans le forum Langages de programmation
    Réponses: 1
    Dernier message: 21/02/2008, 16h54
  4. Quels classes utiliser pour remplacer des classes qui sont propriété de Sun
    Par danyboy85 dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 21/11/2007, 16h36
  5. [C#]Quel objet utiliser pour un tableau..
    Par Jinroh77 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 16/10/2006, 20h22

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