Größenänderungsoptionen im DataGrid-Steuerelement

Es stehen verschiedene Optionen zur Verfügung, um zu steuern, wie DataGrid seine Größe selbst ändert. Die DataGrid und einzelne Zeilen und Spalten in DataGrid können automatisch auf ihre Inhalte festgelegt oder auf bestimmte Werte festgelegt werden. Standardmäßig wächst und schrumpft die DataGrid, um sich der Größe ihres Inhalts anzupassen.

Dimensionierung von DataGrid

Vorsicht beim Verwenden der automatischen Größenanpassung

Standardmäßig werden die Height- und Width-Eigenschaften von DataGrid auf Double.NaN ("Auto" in XAML) festgelegt, und die DataGrid-Eigenschaft wird an die Größe des Inhalts angepasst.

Wenn Sie es in einem Container platzieren, der die Größe seiner untergeordneten Elemente nicht einschränkt, wie z. B. Canvas oder StackPanel, wird DataGrid über die sichtbaren Grenzen des Containers hinaus ausgedehnt und die Bildlaufleisten werden nicht angezeigt. Diese Bedingung hat sowohl Auswirkungen auf die Benutzerfreundlichkeit als auch auf die Leistung.

Wenn sie an einen Datensatz gebunden ist, wenn Height von DataGrid nicht eingeschränkt ist, wird weiterhin eine Zeile für jedes Datenelement im gebundenen Datensatz hinzugefügt. Dies kann dazu führen, dass der DataGrid außerhalb der sichtbaren Grenzen Ihrer Anwendung wächst, wenn Zeilen hinzugefügt werden. In diesem Fall zeigt DataGrid keine Bildlaufleisten an, da Height weiter wächst, um die neuen Zeilen aufzunehmen.

Ein Objekt wird für jede Zeile in der DataGrid erstellt. Wenn Sie mit einem großen Datensatz arbeiten und dem DataGrid erlauben, sich automatisch zu vergrößern, kann die Erstellung einer großen Anzahl von Objekten die Leistung Ihrer Anwendung beeinträchtigen.

Um diese Probleme bei der Arbeit mit großen Datensätzen zu vermeiden, wird empfohlen, dass Sie den Wert der Height oder DataGrid in einem Container platzieren, der den Height einschränkt, wie z. B. ein Grid. Wenn die Height eingeschränkt ist, erstellt DataGrid nur die Zeilen, die in den angegebenen Height-Bereich passen, und werden diese Zeilen nach Bedarf wiederverwendet, um neue Daten anzuzeigen.

Festlegen der DataGrid-Größe

Der DataGrid-Wert kann auf die automatische Größe innerhalb der angegebenen Grenzen festgelegt werden, oder die DataGrid kann auf eine bestimmte Größe festgelegt werden. In der folgenden Tabelle sind die Eigenschaften aufgeführt, die auf DataGrid-Größe festgelegt werden können.

Eigenschaft Beschreibung
Height Legt eine bestimmte Höhe für die DataGrid fest.
MaxHeight Legt die obere Grenze für die Höhe der DataGrid fest. Die DataGrid wird vertikal wachsen, bis sie diese Höhe erreicht.
MinHeight Legt die untere Grenze für die Höhe der DataGrid fest. Die DataGrid wird vertikal verkleinern, bis sie diese Höhe erreicht.
Width Legt eine bestimmte Breite für die DataGrid fest.
MaxWidth Legt die obere Grenze für die Breite der DataGrid fest. Die DataGrid wird horizontal wachsen, bis sie diese Breite erreicht.
MinWidth Legt die untere Grenze für die Breite der DataGrid fest. Die DataGrid wird horizontal verkleinern, bis sie diese Breite erreicht.

Größenanpassung von Zeilen und Zeilenüberschriften

DataGrid-Zeilen

Standardmäßig ist die Height-Eigenschaft einer DataGrid-Zeile auf Double.NaN ("Auto" in XAML) eingestellt, und die Zeilenhöhe wird auf die Größe ihres Inhalts erweitert. Die Höhe aller Zeilen in der DataGrid-Zeile kann durch Festlegen der DataGrid.RowHeight-Eigenschaft angegeben werden. Benutzer können die Zeilenhöhe ändern, indem Sie die Zeilenkopfteiler ziehen.

DataGrid-Zeilenüberschriften

Zum Anzeigen von Zeilenüberschriften muss die HeadersVisibility-Eigenschaft auf DataGridHeadersVisibility.Row oder DataGridHeadersVisibility.All. Standardmäßig werden Zeilenüberschriften angezeigt, und sie werden automatisch so groß, dass sie ihren Inhalt anpassen. Die Zeilenüberschriften können durch Festlegen der DataGrid.RowHeaderWidth-Eigenschaft eine bestimmte Breite erhalten.

Größenanpassung von Spalten und Spaltenüberschriften

DataGrid-Spalten

Die DataGrid-Werte der DataGridLength-Struktur und der DataGridLengthUnitType-truktur werden verwendet, um absolute oder automatische Größenanpassungsmodi anzugeben.

In der folgenden Tabelle sind die Werte aufgeführt, die von der DataGridLengthUnitTypeStruktur bereitgestellt werden.

Name Beschreibung
Auto Der Standardmodus für die automatische Größenanpassung passt die DataGrid-Spaltengröße an den Inhalt der Zellen und der Spaltenüberschriften an.
SizeToCells Bei der zellenbasierten automatischen Größenanpassung werden die DataGrid-Spalten auf der Grundlage des Inhalts der Zellen in der Spalte angepasst, ohne Berücksichtigung der Spaltenüberschriften.
SizeToHeader Der Modus "Kopfzeilenbasierte automatische Größenanpassung" passt die DataGrid-Spaltengröße nur an den Inhalt der Spaltenköpfe an.
Pixel Bei der pixelbasierten Größenanpassung werden die DataGrid-Spalten auf der Grundlage des angegebenen numerischen Wertes angepasst.
Star Der Sternmaßungsmodus wird verwendet, um den verfügbaren Platz nach gewichteten Proportionen zu verteilen.

In XAML werden Sternwerte als n* ausgedrückt, wobei n einen numerischen Wert darstellt. 1* entspricht *. Wenn zum Beispiel zwei Spalten in DataGrid die Breite * und 2* haben, würde die erste Spalte einen Teil des verfügbaren Platzes erhalten und die zweite Spalte zwei Teile des verfügbaren Platzes.

Die DataGridLengthConverter-Klasse kann verwendet werden, um Daten zwischen numerischen oder Zeichenfolgenwerten und DataGridLength-Werten zu konvertieren.

Standardmäßig ist die DataGrid.ColumnWidth Eigenschaft auf SizeToHeaderfestgelegt, und die DataGridColumn.Width Eigenschaft ist auf Auto festgelegt. Wenn der Größenmodus auf Auto oder SizeToCells, Spalten auf die Breite ihrer breitesten sichtbaren Inhalte vergrößert werden. Beim Scrollen werden diese Größenmodi dazu führen, dass Spalten erweitert werden, wenn Inhalte, die größer als die aktuelle Spaltengröße sind, in die Ansicht verschoben werden. Die Spalte wird nach dem Bildlauf des Inhalts nicht verkleinert.

Spalten in der DataGrid Eigenschaft können auch so festgelegt werden, dass nur innerhalb der angegebenen Grenzen automatisch größe wird, oder Spalten können auf eine bestimmte Größe festgelegt werden. In der folgenden Tabelle sind die Eigenschaften aufgeführt, die auf Spaltengrößen festgelegt werden können.

Eigenschaft Beschreibung
DataGrid.MaxColumnWidth Legt die obere Grenze für alle Spalten in der DataGrid fest.
DataGridColumn.MaxWidth Legt die obere Grenze für eine einzelne Spalte fest. Überschreibt DataGrid.MaxColumnWidth.
DataGrid.MinColumnWidth Legt die untere Grenze für alle Spalten in der DataGrid fest.
DataGridColumn.MinWidth Legt die untere Grenze für eine einzelne Spalte fest. Überschreibt DataGrid.MinColumnWidth.
DataGrid.ColumnWidth Legt eine bestimmte Breite für alle Spalten in der DataGrid fest.
DataGridColumn.Width Legt eine bestimmte Breite für eine einzelne Spalte fest. Überschreibt DataGrid.ColumnWidth.

DataGrid-Spaltenüberschriften

Standardmäßig werden DataGrid Spaltenüberschriften angezeigt. Zum Ausblenden von Spaltenüberschriften muss die HeadersVisibility Eigenschaft auf DataGridHeadersVisibility.Row oder DataGridHeadersVisibility.None festgelegt werden. Wenn Spaltenüberschriften angezeigt werden, werden sie standardmäßig automatisch so groß, dass sie ihren Inhalt anpassen. Die Spaltenüberschriften können durch Festlegen der DataGrid.ColumnHeaderHeight Eigenschaft eine bestimmte Höhe erhalten.

Ändern der Größe mit der Maus

Sie können die Größe von DataGrid Zeilen und Spalten ändern, indem Sie die Trennlinien der Zeilen- oder Spaltenköpfe verschieben. DataGrid unterstützt auch die automatische Größenänderung von Zeilen und Spalten durch Doppelklick auf den Zeilen- oder Spaltentrenner. Um zu verhindern, dass ein Benutzer bestimmte Spalten ändert, legen Sie die DataGridColumn.CanUserResize Eigenschaft für die einzelnen Spalten auf false fest. Um zu verhindern, dass Benutzer die Größe aller Spalten ändern, legen Sie die DataGrid.CanUserResizeColumns Eigenschaft auf false fest. Um zu verhindern, dass Benutzer die Größe aller Zeilen ändern, legen Sie die DataGrid.CanUserResizeRows Eigenschaft auf false fest.

Weitere Informationen