Comment changer la couleur d’intersection des en-têtes dans la grille de données WPF ?

la programmation


Salut les gars
S’il vous plaît, veuillez voir la photo Intersection — Freeimage.host[^]

Comme vous le voyez, il y a un espace blanc entre RowHeaders et ColumnHeaders dans DataGrid. J’ai donc besoin de savoir comment puis-je changer sa couleur ?
Merci.

Ce que j’ai essayé :

J’ai essayé de changer l’arrière-plan de RowHeader, également de ColumnHeader, mais sa couleur n’a pas changé.
J’ai cherché sur Internet mais je n’ai trouvé aucun code pour cela.

Solution 1

Le meilleur endroit pour comprendre un contrôle WPF est de consulter le modèle par défaut. Pour le DataGrid, il peut être trouvé ici : Styles et modèles DataGrid – WPF .NET Framework | Microsoft Apprendre[^].

Ce que vous soulignez, c’est le Bouton Sélectionner tout dans le coin supérieur gauche du DataGrid.

En utilisant le lien ci-dessus, c’est le DataGridSelectAllButtonStyle. C’est le tout premier style trouvé sur la page liée ci-dessus.

XML
<Style TargetType="{x:Type Button}"
       x:Key="{ComponentResourceKey ResourceId=DataGridSelectAllButtonStyle, 
       TypeInTargetAssembly={x:Type DataGrid}}">
    <!-- trimmed -->
</Style>

Faites une recherche dans le modèle et vous pourrez voir où il est appliqué. C’est le style que vous devez modifier.

XML
<ControlTemplate TargetType="{x:Type DataGrid}">
    <!-- trimmed -->
		<Button Focusable="false"
			Command="{x:Static DataGrid.SelectAllCommand}"
			Style="{DynamicResource {ComponentResourceKey 
			ResourceId=DataGridSelectAllButtonStyle, 
			TypeInTargetAssembly={x:Type DataGrid}}}"
			Visibility="{Binding HeadersVisibility, 
			ConverterParameter={x:Static DataGridHeadersVisibility.All}, 
			Converter={x:Static DataGrid.HeadersVisibilityConverter}, 
			RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}"
			Width="{Binding CellsPanelHorizontalOffset, 
			RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}" />
    <!-- trimmed -->
</ControlTemplate>

Il faut donc modifier le DataGridSelectAllButtonStyle et appliquez un nouveau ControlTemplate. Il y a un lien sur cette page qui vous indiquera comment créer un ControlTemplate et un lien vers un exemple en bas de la page.

コメント

タイトルとURLをコピーしました