8
votes

Est-il possible d'arrêter la barre de défilement verticale de pousser les colonnes / en-tête DataGrid à gauche?

est-il possible d'arrêter la barre de défilement verticale de pousser les colonnes / en-tête DataGrid à gauche? (Voir photo)

Alternativement, est-il possible de styler la petite zone encerclée de sorte qu'il ne se présente pas seulement comme un carré blanc?

gridview


0 commentaires

4 Réponses :


0
votes

Vous ne savez pas si cela aide, mais une approche que j'ai utilisée dans le passé pour séparer les colonnes de leurs en-têtes et les présenter séparément.

Les définitions de la colonne sont définies dans les ressources: P>

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>
    <GridViewHeaderRowPresenter Columns="{StaticResource siColumnCollection}"/>
    <ListView Grid.Row="1" ItemsSource="{Binding ViewModelList}">
        <ListView.Resources>
            <DataTemplate x:Key="siNormalRowTemplate">
                <GridViewRowPresenter Columns="{StaticResource siColumnCollection}"/>
            </DataTemplate>
        </ListView.Resources>
    </ListView>
</Grid>


0 commentaires

2
votes

La couleur de ce rectangle au-dessus de la barre de défilement est la propriété d'arrière-plan du DataGrid. Donc, par exemple, si vous vouliez le faire jaune, vous pouvez définir

<DataGrid Background="Yellow" ...


2 commentaires

C'était la meilleure option des deux, et je pouvais mettre un angle de gradient là-bas pour le faire ressembler à je le voulais. Je pensais que j'avais essayé cela, changeant des antécédents sur le DataGrid qui est, mais j'ai découvert que j'avais une substitution à la dernière minute empêchant mes changements à prendre effet. :)


Super. Juste au cas où vous vous demandez, vous pouvez faire une brosse avec deux brosses et aucun dégradé entre les deux en mettant deux arrêts au même endroit. Comme décrit ici: Stackoverflow.com/questions/6546837/wpf-background- deux tons



6
votes

Veuillez utiliser le modèle suivant (la colonne -span fait l'affaire):

        <Style x:Key="{x:Type DataGridColumnHeadersPresenter}" TargetType="{x:Type DataGridColumnHeadersPresenter}">
            <Setter Property="Grid.ColumnSpan" Value="2" />
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type DataGridColumnHeadersPresenter}">
                        <Grid>
                            <DataGridColumnHeader IsHitTestVisible="False" Name="PART_FillerColumnHeader"/>
                            <ItemsPresenter/>
                        </Grid>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>


1 commentaires

Option intéressante, cela fonctionne mais vous pouvez toujours voir un séparateur et un pointeur de souris resizécolumn.



0
votes

Je sais que cette question a été effectuée il y a plusieurs années, mais j'aimerais poster ma solution afin d'aider les autres à faire face au même problème.

Basé sur la solution d'IMIL4EG dans cette réponse ( https://stackoverflow.com/a/64356870/13802688 ) i Également créé un contrôle de la bordure pour remplir la colonne = 2, rangée = 0 espace vide du contrôleur de contrôle de ScrollViewer. Mais j'ai ajouté aussi une marge = "- 1,0,0,0" pour empêcher un petit espace entre l'en-tête et la frontière que j'ai créée.

Donc, sa solution ajoute la ligne ci-dessous comme on peut observer dans sa réponse:

Le mien est le même, mais avec la marge décrite:

J'espère que cela peut être utile à quelqu'un!


0 commentaires