J'ai une grille de données WPF (de la WPF Toolkit comme le titre l'indique) et je veux un écart entre certaines colonnes, où même pas un en-tête est au-dessus et vous pouvez voir le fond entre. Je n'ai aucune idée de comment gérer ça. D'ailleurs, toutes mes colonnes sont TemplateColumns, mais je préférerais une solution où je n'ai pas besoin de styliser chaque colonne et son en-tête pour avoir un gab d'un côté. Peut-être quelque chose comme <DataGridGapColum Width="5" />
, mais quelque chose comme ça n'existe pas malheureusement.Comment créer un espace entre les colonnes d'un DataGrid WPFToolkit
Répondre
Cela nécessitera quelques étapes. Nous devons d'abord désactiver les GridLines dans le DataGrid pour pouvoir obtenir des "Gap Cells". Nous laisserons les GridLines aux DataGridCells à la place. Nous devons également spécifier un GridLinesBrush. Nous ne pouvons pas créer un style "DataGridGapColumn" pour un DataGridColumn puisqu'il ne dérive pas de FrameworkElement, donc nous devrons nous contenter d'un GapCellStyle et d'un GapHeaderStyle. Ensuite, nous pouvons créer un "DataGridGapColumn" comme celui-ci
<DataGridTextColumn Width="100"
CellStyle="{StaticResource DataGridGapCell}"
HeaderStyle="{StaticResource DataGridGapHeader}"/>
Exemple avec des colonnes et des colonnes Gap
<DataGrid x:Name="dataGrid"
GridLinesVisibility="None"
HorizontalGridLinesBrush="Black"
...>
<DataGrid.Resources>
<!-- Regular Cell Style -->
<Style TargetType="DataGridCell">
<Setter Property="BorderThickness" Value="0,0,1,1"/>
<Setter Property="BorderBrush" Value="{Binding ElementName=dataGrid, Path=HorizontalGridLinesBrush}"/>
</Style>
<!-- Gap Cell Style -->
<Style x:Key="DataGridGapCell" TargetType="DataGridCell">
<Setter Property="Background" Value="{Binding ElementName=dataGrid, Path=Background}"/>
<Setter Property="BorderThickness" Value="0,0,1,0"/>
<Setter Property="BorderBrush" Value="{Binding ElementName=dataGrid, Path=HorizontalGridLinesBrush}"/>
</Style>
<!-- Gap ColumnHeader Style -->
<Style x:Key="DataGridGapHeader" TargetType="DataGridColumnHeader">
<Setter Property="Background" Value="{Binding ElementName=dataGrid, Path=Background}"/>
</Style>
</DataGrid.Resources>
<DataGrid.Columns>
<DataGridTextColumn Header="Header 1" Binding="{Binding Header1}"/>
<DataGridTextColumn Width="100" CellStyle="{StaticResource DataGridGapCell}" HeaderStyle="{StaticResource DataGridGapHeader}"/>
<DataGridTextColumn Header="Header 2" Binding="{Binding Header2}"/>
<DataGridTextColumn Header="Header 3" Binding="{Binding Header3}"/>
<DataGridTextColumn Width="50" CellStyle="{StaticResource DataGridGapCell}" HeaderStyle="{StaticResource DataGridGapHeader}"/>
<DataGridTextColumn Header="Header 4" Binding="{Binding Header4}"/>
<DataGridTextColumn Header="Header 5" Binding="{Binding Header5}"/>
</DataGrid.Columns>
</DataGrid>
Mise à jour
Vous pouvez mettre les styles dans un ResourceDictionary ou dans Window.Resouces. Exemple
<Window.Resources>
<Style x:Key="DataGridGapStyle" TargetType="DataGrid">
<Setter Property="GridLinesVisibility" Value="None"/>
<Setter Property="HorizontalGridLinesBrush" Value="Black"/>
</Style>
<!-- Regular Cell Style -->
<Style TargetType="DataGridCell">
<Setter Property="BorderThickness" Value="1,0,1,1"/>
<Setter Property="BorderBrush" Value="{Binding ElementName=dataGrid, Path=HorizontalGridLinesBrush}"/>
</Style>
<!-- Gap Cell Style -->
<Style x:Key="DataGridGapCell" TargetType="DataGridCell">
<Setter Property="Background" Value="{Binding ElementName=dataGrid, Path=Background}"/>
<Setter Property="BorderThickness" Value="0,0,0,0"/>
<Setter Property="BorderBrush" Value="{Binding ElementName=dataGrid, Path=HorizontalGridLinesBrush}"/>
</Style>
<!-- Gap ColumnHeader Style -->
<Style x:Key="DataGridGapHeader" TargetType="DataGridColumnHeader">
<Setter Property="Background" Value="{Binding ElementName=dataGrid, Path=Background}"/>
</Style>
</Window.Resources>
<Grid>
<DataGrid x:Name="dataGrid"
Style="{StaticResource DataGridGapStyle}"
AutoGenerateColumns="False"
ItemsSource="{Binding MyCollection}">
<DataGrid.Columns>
<DataGridTextColumn Header="Header 1" Binding="{Binding Header1}"/>
<DataGridTextColumn Width="100" CellStyle="{StaticResource DataGridGapCell}" HeaderStyle="{StaticResource DataGridGapHeader}"/>
<DataGridTextColumn Header="Header 2" Binding="{Binding Header2}"/>
</DataGrid.Columns>
</DataGrid>
</Grid>
Eh bien, un peu triste que c'est ce compliqué, mais ok. Merci – Tokk
@Tokk: Oui, c'est un peu compliqué. Les styles qui sont dans DataGrid.Resources peuvent aller n'importe où, un ResourceDictionary par exemple. Là vous pouvez également créer le Style pour le DataGrid et ensuite tout ce que vous avez à faire pour obtenir une colonne Gap est d'ajouter un
Donc, finalement, j'ai créé un DataGridGapColumn, dérivé de DataGridColumn, qui a fait de vos suggestions un style standard pour cela. Cela rend un peu plus facile. – Tokk
- 1. WPF DataGrid lier les données entre les colonnes
- 2. Disparition de ligne d'animation dans WPFToolKit DataGrid
- 3. Comment définir le modèle de DataGridCell dans DataGrid de WpfToolkit?
- 4. Liaison entre les deux colonnes dans le DataGrid
- 5. wpfToolkit: DataGrid Double-cliquez sur le problème
- 6. MvvmLight EventToCommand et WPFToolkit DataGrid double-cliquez sur
- 7. Comment ajouter une nouvelle ligne à wpfToolkit: DataGrid (en code)
- 8. Colonne avec la valeur DateTime dans WPFToolkit DataGrid
- 9. CoreText: Espace entre les lignes
- 10. colonnes Alternant dans un DataGrid
- 11. Liaison d'un événement WPFToolkit DataGrid à une commande ModelView (MVVM)
- 12. WPFtoolkit et son DatagridColumnHeader
- 13. Espace entre les listes imbriquées
- 14. Définition du style d'édition de colonne DataGrid de WpfToolkit
- 15. Espace indésirable entre les divs
- 16. Comment créer deux images sans espace entre elles?
- 17. Un DataGrid Item Renderer pour plusieurs colonnes
- 18. Codage TikZ: Comment créer un espace entre le polygone et les nœuds qu'il entoure?
- 19. espace IE entre les lignes
- 20. Les colonnes Datagrid contient la valeur
- 21. WpfToolkit DataGrid ne fonctionne pas dans Windows Phone 7
- 22. Comment connecter WPFToolkit DataGrid à une source de requête de recherche en code-behind
- 23. WPF MvvM DataGrid colonnes dynamiques
- 24. colonnes DataGrid WPF
- 25. Comment rechercher entre les colonnes dans mysql
- 26. Comment créer un affichage DataGrid dans Android?
- 27. Utilisation de DataGridHyperlinkColumn de WPFToolKit
- 28. MVVM Comment concevoir un ViewModel pour un Datagrid dont les colonnes sont choisies par l'utilisateur
- 29. Comment faire pour imprimer toutes les colonnes dans SilverLine DataGrid
- 30. comment trier un DataGrid flexible selon plusieurs colonnes?
Je pense une image qui montre ce que vous demandez aidera – Erez