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
.NET Desktop feedback