1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    octobre 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : octobre 2017
    Messages : 3
    Points : 1
    Points
    1

    Par défaut [WPF] Datagrid style & multiselection

    Bonjour,

    Je viens vous solliciter pour m'aider sur la personnalisation d'une datagrid !

    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
    18
    19
    20
    21
                    <DataGrid 
                        x:Name="NamesListDataGrid"
                        SelectionChanged="NamesList_OnSelectionChanged"
                        MouseDown="NamesListDataGrid_OnMouseDown"
                        IsReadOnly="True" 
                        RowHeaderWidth="0" 
                        AutoGenerateColumns="False" 
                        CanUserResizeRows="False" 
                        HorizontalAlignment="Stretch" 
                        VerticalAlignment="Stretch">
                        <DataGrid.ColumnHeaderStyle>
                            <Style TargetType="{x:Type DataGridColumnHeader}">
                                <Setter Property="FontWeight"
                                        Value="SemiBold" />
                            </Style>
                        </DataGrid.ColumnHeaderStyle>
                        <DataGrid.Columns>
                            <DataGridTextColumn Header="Names"
                                                Width="*" Binding="{Binding}" />
                        </DataGrid.Columns>
                    </DataGrid>

    Je veux que lorsque je clique sur une row de ma datagrid, sa couleur d'arrière plan change (en noir par exemple), mais j'aimerai que celle ci ne change pas si je clique sur une autre row.

    En gros, je veux appliquer le même style sur toutes les row sur lesquelles je clique, et si je clique sur une qui a déjà été cliquée, elle reprend son style d'origine (blanc par exemple)
    Je veux aussi que je puisse sélectionner plusieurs row à la fois (en passant la souris et en maintenant le bouton gauche appuyé)

    J'ai essayé plusieurs choses, mais je n'y arrive pas.

    Voici un style que j'avais mis au départ, mais celui ci s'applique sur une seule row sélectionnée :

    Code xaml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
            <Style TargetType="{x:Type DataGridRow}">
                <Style.Resources>
                   <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Black" />
                   <SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}" Color="White" />
                </Style.Resources>
            </Style>

    merci pour votre aide !

  2. #2
    Membre expert
    Inscrit en
    avril 2008
    Messages
    1 968
    Détails du profil
    Informations personnelles :
    Âge : 57

    Informations forums :
    Inscription : avril 2008
    Messages : 1 968
    Points : 3 380
    Points
    3 380

    Par défaut

    bonjour

    Voici un style que j'avais mis au départ, mais celui ci s'applique sur une seule row sélectionnée
    Tu es sur de ce que tu avances ?
    Si tu mets le flag SelectionMode="Extended" de ton DGV tu peux :
    - souris gauche maintenue appuyée(ou souris gauche+SHIFTt), sélectionner ou désélectionner plusieurs lignes voisines
    - souris gauche maintenue appuyée+CTRL, selectionnier une ligne ou désélectionner une ligne particulière

    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
     
    <DataGrid 
                        x:Name="NamesListDataGrid"
                        IsReadOnly="True" 
                        RowHeaderWidth="0" 
                        AutoGenerateColumns="False" 
                        CanUserResizeRows="False" 
                        HorizontalAlignment="Stretch" 
                        VerticalAlignment="Stretch"
                        ItemsSource="{Binding Source={StaticResource data}}"
                        SelectionMode="Extended"
     
                >
    .............
     </DataGrid>
    Bon code...

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    octobre 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : octobre 2017
    Messages : 3
    Points : 1
    Points
    1

    Par défaut

    Citation Envoyé par MABROUKI Voir le message
    bonjour


    Tu es sur de ce que tu avances ?
    Si tu mets le flag SelectionMode="Extended" de ton DGV tu peux :
    - souris gauche maintenue appuyée(ou souris gauche+SHIFTt), sélectionner ou désélectionner plusieurs lignes voisines
    - souris gauche maintenue appuyée+CTRL, selectionnier une ligne ou désélectionner une ligne particulière

    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
     
    <DataGrid 
                        x:Name="NamesListDataGrid"
                        IsReadOnly="True" 
                        RowHeaderWidth="0" 
                        AutoGenerateColumns="False" 
                        CanUserResizeRows="False" 
                        HorizontalAlignment="Stretch" 
                        VerticalAlignment="Stretch"
                        ItemsSource="{Binding Source={StaticResource data}}"
                        SelectionMode="Extended"
     
                >
    .............
     </DataGrid>
    Bon code...
    Oui sûr dans le sens où ce que je demande et de pouvoir sélectionner différents row sans appuie sur ctrl, je clique sur row 1 puis 3 puis 4, ils seront sélectionnés et mon style s'appliquera sur les 3 et non pas sur row4 uniquement !

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    octobre 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : octobre 2017
    Messages : 3
    Points : 1
    Points
    1

    Par défaut

    Un petit up

Discussions similaires

  1. [C#][WPF] datagrid & updates & multifenêtres
    Par Orano77 dans le forum Windows Presentation Foundation
    Réponses: 3
    Dernier message: 05/04/2011, 17h35
  2. Ajouts en Masse [WPF] datagrid ou [Windows Form] Datagridview
    Par lerieure dans le forum Développement Windows
    Réponses: 0
    Dernier message: 05/12/2010, 14h58
  3. WPF - DataGrid du WPFToolKit : Accéder aux cellules pendant le chargement de la page
    Par YHDVP dans le forum Windows Presentation Foundation
    Réponses: 6
    Dernier message: 18/11/2009, 15h00
  4. C# WPF datagrid
    Par akkai dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 08/01/2009, 17h15
  5. datagrid et multiselection
    Par tsdia2 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 15/05/2008, 14h59

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