Entfernen Sie die linke Grenze des Rasters für WPF DataGrid Spalten-header übereinstimmen Daten-grid-Linien
Die Grenze Stile für header-Zellen und der Daten-Zellen in einem DataGrid WPF 4.0 inkonsistent sind.. Header-Zellen haben eine Grenze, die enthält einen linken vertikalen Rahmen-Linie und einem rechten vertikalen Grenzlinie um den text für die Kopfzeile. Daten-grid text-Spalte Daten-Linien sind gestylt, so dass nur die Rechte Seite hat eine vertikale Trennlinie. Die folgenden Beispiel-Bild soll dies verdeutlichen (beachten Sie, dass der grid-line Farbe wurde geändert auf #D0D0D0):
Hier ist das gleiche Bild vergrößert, um zu zeigen Sie die Inkonsistenz auf:
Wie ändern Sie die grid-Header (vielleicht über einen templates oder Formatvorlagen) zu entfernen, die den linken Rand, so dass der header vertikalen Begrenzungslinien eine Linie mit den Daten die Grenzen?
- Eine einfachere Lösung ist die "doppelte Stärke" für die
DataGridCell
s durch ziehen einer Trennlinie auf beiden Seiten. Vielleicht kann diese Frage helfen: stackoverflow.com/questions/4737518/.... Andernfalls werden Sie im Grunde müssen Sie neu erstellen die gesamte Vorlage fürDataGridColumnHeader
- Doppelte Dicke Ränder schauen Sie einfach falsch für mich, da Sie eine Verschwendung von horizontalen Raum. Ich möchte alle meine Rasterlinien, - header und-Daten die gleiche Breite, eine Einheit.
- Ich bin vollkommen einverstanden, und ich habe versucht mich ein paar mal. Das problem ist, dass die meisten Teile für
DataGridColumnHeader
gezogen werden, in der code-behind-und sobald Sie etwas ändern, e.g legen Sie den Hintergrund auf Grün, dann verlieren Sie den gesamten Stil. - Auf einer seitlichen Anmerkung, die RowHeaders haben das gleiche problem
- Zeile die überschriften), es scheint nicht so. In meinem hineingezoomten Bild, die Zeilenüberschriften sind immer eine Einheit Dicke.
- Haben Sie stylte die
DataGrid
? Ich bin mir ziemlich sicher, dass, wenn Sie den Standard-Stil, der RowHeaders haben 2 Separatoren ebenso wie die ColumnHeaders (es sei denn es gibt manchen trick, dass ich bewusst bin). Ein screenshot hochgeladen, dieses hier: mediafire.com/?3sxx6h5nvh9f1bo - Ich entfernte die Zeile Header von meinem Beispiel, aber ich sehe Ihren Punkt.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Update: Hinzugefügt zwei Lösungen, die beide produzieren Ergebnis wie
Lösung 1
SeparatorVisibility="Collapsed"
fürDataGridHeaderBorder
Border
sXaml
Lösung 2
Separatoren für
DataGridColumnHeader
gezeichnet wird, in derRenderTheme
Methode inDataGridHeaderBorder
. Diese Klasse ist so ziemlich ein "alles oder nichts" - Sache ist, da mit jeder Veränderung einer Eigenschaft in deaktiviert den gesamten Stil (keine Grenze, kein Sortieren-Pfeile, etc.). Es ist auch versiegelt, so können wir nicht daraus ziehen. Wir können allerdings kopieren Sie die gesamte Klasse und machen dieDataGridColumnHeader
s verwenden, die Klasse statt.Dem Teil, zieht der Separatoren sieht wie folgt aus
Von hier aus könnten wir entfernen Sie einfach die Links Separator und wir würden ein Separator Breite von 1 statt 2, aber dann hätten wir die falsche Färbung für die linke Seite, wenn Schweben, Drücken oder Sortierung eine Spalte. Um dies zu überwinden, können wir bewegen Sie den Linken Separator, indem Sie 1 auf der Linken Seite und ändern Sie den ZIndex so Schweben etc. wird höher ZIndex als normale Färbung. Für diese Arbeit brauchen wir auch zum binden ZIndex von
DataGridColumnHeader
zu ZIndex vonDataGridColumnBorder
.Können wir es verwenden, wie dies
MyDataGridHeaderBorder war zu groß, um zu veröffentlichen, damit ich es hochgeladen hier: MyDataGridHeaderBorder.cs
Um dies zu vermeiden, fügen Sie einfach unterhalb der Einstellung der Eigenschaft in DataGridColumnHeader Stil.
Ist die Frage in diesem datagrid ist die Grenze der Zeichnung ist passiert im inneren header-Zelle Grenze auf der linken Seite. Dies verursacht das zusätzliche Futter, wie in der Abbildung oben. Wenn Sie auch festlegen datagrid-broderthickness dann Frage erscheint für die Oberseite der Zelle auch.
Hoffen, diese Einstellungen zu lösen problem, wenn der Dicke ist '1'. Für andere Materialstärken, Sie wissen jetzt, was du einstellen musst 🙂
Nur einstellen, linken Rand thichkness in HeaderStyle 0: