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

Framework .NET Discussion :

[WPF] ListView + gridView : largeur de colonne


Sujet :

Framework .NET

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    423
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 423
    Points : 188
    Points
    188
    Par défaut [WPF] ListView + gridView : largeur de colonne
    Bonjour

    Est-il possible de définir une taille "automatique" à la largeur d'une colonne de gridView ?

    Par exemple, je voudrais que la dernière colonne occupe la totalité de l'espace disponible restant

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

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    En définissant la taille de la colonne à Auto ?

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    423
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 423
    Points : 188
    Points
    188
    Par défaut
    j'ai essayé mais ça ne compilait pas. Valeur non valide, ou quelque chose comme ça... Hum... J'ai du faire une erreur quelque part . Je refais un essai...

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    423
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 423
    Points : 188
    Points
    188
    Par défaut
    j'avais fait une erreur...
    mais ce n'est pas ça, avec la valeur Auto, la largeur s'adapte à son contenu. Par contre en la combinant avec un style appliqué au gridView, je devrais pouvoir atteindre mon but.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    423
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 423
    Points : 188
    Points
    188
    Par défaut
    c'est bon, je suis parvenu à mon but .

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

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Si tu pouvais nous montrer comment, cela pourrait servir à d'autre

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    423
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 423
    Points : 188
    Points
    188
    Par défaut
    En fait je n'ai pas réussi à faire qu'une colonne occupe toute la largeur restante.

    Le problème que j'avais était le suivant :

    j'ai défini des styles pour les en-tête. le problème était que si l'utilisateur agrandissait la fenêtre, le gridView s'agrandissait aussi. Mais sur l'espace supplémentaire le style du système s'appliquait à l'en-tête. J'avais donc un gridView tout moche.

    Ce que j'ai fait :

    j'ai défini un style que j'ai utilisé pour la propriété ColumnHeaderContainerStyle du gridView et un autre que j'ai appliqué aux colonne (propriété HeaderContainerStyle)

    Voilà. Comme ça mon tableau paraît occuper toute la largeur, même si ce n'est pas vraiment le cas.


    Ceci dit, si quelqu'un connais un moyen pour qu'une colonne occupe l'espace disponible restant, je suis preneur.

  8. #8
    Membre régulier Avatar de despeludo
    Inscrit en
    Janvier 2004
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 121
    Points : 83
    Points
    83
    Par défaut
    La réponse arrive sans doute un peu tard mais on peu le faire en utilisant un converter.
    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
    15
    16
    17
    18
    19
    20
     
        public class WidthConvertor : IValueConverter
        {
            public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
            {
                ListView l = value as ListView;
                GridView g = l.View as GridView;
                double total = 0;
                for (int i = 0; i < g.Columns.Count - 1; i++) // Tout sauf la dernière colonne
                {
                    total += i ;
                }
                return (l.ActualWidth - total);
            }
     
            public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
            {
                throw new NotImplementedException();
            }
        }
    Du coup après dans le XAML on arrive à quelquechose 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
     
            <ListView>
                <ListView.Resources>
                    <local:WidthConvertor x:Key="test"/>
                </ListView.Resources>
                <ListView.View>
                    <GridView >
                        <GridViewColumn Header="Date" Width="50" />
                        <GridViewColumn Header="Date" Width="50" />
                        <GridViewColumn Header="Date" Width="50" />
                        <GridViewColumn Width="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListView} }, Converter={StaticResource test}}">
                </ListView.View>
            </ListView>
    Il ne reste plus qu'à réagir aux événement de changement de taille.
    Un ordinateur fait ce qu'on lui demande, et c'est bien le problème.

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    423
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 423
    Points : 188
    Points
    188
    Par défaut
    C'est bon , merci

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

Discussions similaires

  1. [WPF] ListView avec colonnes et boutons
    Par Chris_LaFouine dans le forum Windows Presentation Foundation
    Réponses: 1
    Dernier message: 30/05/2008, 16h16
  2. Réinitialisation de la largeur des colonnes d'un listview
    Par soso78 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 12/12/2007, 18h13
  3. ListView largeur de colonne
    Par TheBlackReverand dans le forum Windows Forms
    Réponses: 7
    Dernier message: 30/07/2007, 18h07
  4. Largeur des colonnes d'un ListView
    Par Seth77 dans le forum Windows Forms
    Réponses: 8
    Dernier message: 19/02/2007, 09h44
  5. Largeur de colonne d'une ListView
    Par deaqu1 dans le forum IHM
    Réponses: 7
    Dernier message: 07/06/2005, 19h45

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