Größenänderungsoptionen im DataGrid-SteuerelementSizing Options in the DataGrid Control

Verschiedene Optionen zur Verfügung, um zu steuern wie die DataGrid wird die Größe.Various options are available to control how the DataGrid sizes itself. Die DataGrid, und einzelne Zeilen und Spalten in der DataGrid, auf die Größe automatisch an den jeweiligen Inhalt festgelegt werden kann, oder auf bestimmte Werte festgelegt werden kann.The DataGrid, and individual rows and columns in the DataGrid, can be set to size automatically to their contents or can be set to specific values. In der Standardeinstellung die DataGrid vergrößert oder verkleinert werden, um die Größe seines Inhalts angepasst.By default, the DataGrid will grow and shrink to fit the size of its contents.

Größenanpassung von DataGridSizing the DataGrid

Vorsichtsmaßnahmen bei Verwendung der automatischen GrößenanpassungCautions When Using Automatic Sizing

In der Standardeinstellung die Height und Width Eigenschaften der DataGrid festgelegt Double.NaN ("Auto" in XAML), und die DataGrid wird auf die Größe seines Inhalts angepasst.By default, the Height and Width properties of the DataGrid are set to Double.NaN ("Auto" in XAML), and the DataGrid will adjust to the size of its contents.

Wenn in einem Container platziert werden, die nicht die Größe der untergeordneten Elemente, wie z. B. einschränkt eine Canvas oder StackPanel, DataGrid wird gestreckt, über den sichtbaren Bereich des Containers und keine Bildlaufleisten angezeigt werden.When placed inside a container that does not restrict the size of its children, such as a Canvas or StackPanel, the DataGrid will stretch beyond the visible bounds of the container and scrollbars will not be shown. Dies hat Auswirkungen auf die Nutzbarkeit und Leistung.This condition has both usability and performance implications.

Wenn auf ein Dataset gebunden sind, wenn die Height von der DataGrid ist nicht eingeschränkt wird, ist sie weiterhin eine Zeile für jedes Datenelement im gebundenen Dataset hinzuzufügen.When bound to a data set, if the Height of the DataGrid is not restricted, it will continue to add a row for each data item in the bound data set. Dies kann dazu führen, dass die DataGrid sichtbar außerhalb der Anwendung wächst, wenn Zeilen hinzugefügt werden.This can cause the DataGrid to grow outside the visible bounds of your application as rows are added. Die DataGrid wird nicht angezeigt, Bildlaufleisten in diesem Fall weil seine Height weiterhin wachsen, um die neuen Zeilen aufzunehmen.The DataGrid will not show scrollbars in this case because its Height will continue to grow to accommodate the new rows.

Ein Objekt erstellt wird, für jede Zeile in der DataGrid.An object is created for each row in the DataGrid. Wenn Sie mit einem großen Dataset arbeiten und Sie können die DataGrid um automatisch seine Größe selbst festlegen, kann die Erstellung einer großen Anzahl von Objekten auf die Leistung Ihrer Anwendung auswirken.If you are working with a large data set and you allow the DataGrid to automatically size itself, the creation of a large number of objects may affect the performance of your application.

Um diese Probleme zu vermeiden, wenn Sie mit großen Datasets arbeiten, wird empfohlen, dass Sie ausdrücklich Festlegen der Height von der DataGrid , oder platzieren Sie es in einem Container, mit denen eingeschränkt wird, wird die Height, wie z. B. eine Grid.To avoid these issues when you work with large data sets, it is recommended that you specifically set the Height of the DataGrid or place it in a container that will restrict its Height, such as a Grid. Wenn die Height eingeschränkt, die DataGrid erstellt nur die Zeilen, die in der angegebenen passen Height, und verwendet dann die Zeilen wieder nach Bedarf, um neue Daten anzuzeigen.When the Height is restricted, the DataGrid will only create the rows that will fit within its specified Height, and will recycle those rows as needed to display new data.

Festlegen der DataGrid-GrößeSetting the DataGrid Size

Die DataGrid kann festgelegt werden, automatisch die Größe innerhalb der angegebenen Grenzen oder die DataGrid kann auf eine bestimmte Größe festgelegt werden.The DataGrid can be set to automatically size within specified boundaries, or the DataGrid can be set to a specific size. Die folgende Tabelle zeigt die Eigenschaften, die auf das Steuerelement festgelegt werden können die DataGrid Größe.The following table shows the properties that can be set to control the DataGrid size.

EigenschaftProperty BeschreibungDescription
Height Legt eine bestimmte Höhe für den DataGrid.Sets a specific height for the DataGrid.
MaxHeight Legt die Obergrenze für die Höhe der DataGrid.Sets the upper bound for the height of the DataGrid. Die DataGrid vertikal vergrößert werden, bis es diese Höhe erreicht.The DataGrid will grow vertically until it reaches this height.
MinHeight Legt die untere Grenze für die Höhe der DataGrid.Sets the lower bound for the height of the DataGrid. Die DataGrid wird vertikal verkleinern, bis es diese Höhe erreicht.The DataGrid will shrink vertically until it reaches this height.
Width Legt eine feste Breite für die DataGrid.Sets a specific width for the DataGrid.
MaxWidth Legt die Obergrenze für die Breite der DataGrid.Sets the upper bound for the width of the DataGrid. Die DataGrid horizontal vergrößert werden, bis es diese Breite erreicht.The DataGrid will grow horizontally until it reaches this width.
MinWidth Legt die untere Grenze für die Breite der DataGrid.Sets the lower bound for the width of the DataGrid. Die DataGrid wird horizontal verkleinern, bis diese Breite erreicht.The DataGrid will shrink horizontally until it reaches this width.

Größenanpassung von Zeilen und ZeilenüberschriftenSizing Rows and Row Headers

DataGrid-ZeilenDataGrid Rows

Standardmäßig eine DataGrid Zeile Height -Eigenschaftensatz auf Double.NaN ("Auto" in XAML), und die Zeilenhöhe wird erweitert, um die Größe des Inhalts.By default, a DataGrid row's Height property is set to Double.NaN ("Auto" in XAML), and the row height will expand to the size of its contents. Die Höhe aller Zeilen in der DataGrid kann angegeben werden, durch Festlegen der DataGrid.RowHeight Eigenschaft.The height of all rows in the DataGrid can be specified by setting the DataGrid.RowHeight property. Benutzer können die Zeilenhöhe durch Ziehen der Unterteiler mit Kopfzeile ändern.Users can change the row height by dragging the row header dividers.

DataGrid-ZeilenheaderDataGrid Row Headers

Zum Anzeigen von Zeilenköpfen der HeadersVisibility Eigenschaft muss festgelegt werden, um DataGridHeadersVisibility.Row oder DataGridHeadersVisibility.All.To display row headers, the HeadersVisibility property must be set to DataGridHeadersVisibility.Row or DataGridHeadersVisibility.All. In der Standardeinstellung Zeilenüberschriften angezeigt werden, und sie Größe automatisch an ihren Inhalt angepasst.By default, row headers are displayed and they automatically size to fit their content. Die Zeilenüberschriften können eine bestimmte Breite zugewiesen werden, durch Festlegen der DataGrid.RowHeaderWidth Eigenschaft.The row headers can be given a specific width by setting the DataGrid.RowHeaderWidth property.

Größenanpassung von Spalten und SpaltenheaderSizing Columns and Column Headers

DataGrid-SpaltenDataGrid Columns

Die DataGrid verwendet Werte von der DataGridLength und DataGridLengthUnitType -Struktur in absoluten oder automatische Größenanpassungsmodi angeben.The DataGrid uses values of the DataGridLength and the DataGridLengthUnitType structure to specify absolute or automatic sizing modes.

Die folgende Tabelle zeigt die Beispielwerte durch die DataGridLengthUnitType Struktur.The following table shows the values provided by the DataGridLengthUnitType structure.

NameName BeschreibungDescription
Auto Die Standardeinstellung automatische größenanpassung Modus Größen DataGrid basierend auf den Inhalt von Zellen und Spaltenheader.The default automatic sizing mode sizes DataGrid columns based on the contents of both cells and column headers.
SizeToCells Die zellenbasierte automatische größenanpassung Modus Größen DataGrid basierend auf den Inhalt der Zellen in der Spalte, die Spaltenheader nicht eingeschlossen.The cell-based automatic sizing mode sizes DataGrid columns based on the contents of cells in the column, not including column headers.
SizeToHeader Die Header-basierte automatische größenanpassung Modus Größen DataGrid basierend auf den Inhalt der nur die Spaltenüberschriften.The header-based automatic sizing mode sizes DataGrid columns based on the contents of column headers only.
Pixel Die Pixel-basierten Modus Größen größenanpassung DataGrid basierend auf den numerischen Wert zur Verfügung gestellt.The pixel-based sizing mode sizes DataGrid columns based on the numeric value provided.
Star Der sternvariabler-Modus wird von gewichteten Proportionen verwendet, um Speicherplatz zu verteilen.The star sizing mode is used to distribute available space by weighted proportions.

In XAML werden die Sternwerte als n * ausgedrückt, wobei n für einen numerischen Wert darstellt.In XAML, star values are expressed as n* where n represents a numeric value. 1* entspricht *.1* is equivalent to *. Angenommen, zwei Spalten in einer DataGrid Breiten von * und 2*, die erste Spalte erhält einen Teil des verfügbaren Speicherplatzes und die zweite Spalte zwei Teile der verfügbare Platz erhält.For example, if two columns in a DataGrid had widths of * and 2*, the first column would receive one portion of the available space and the second column would receive two portions of the available space.

Die DataGridLengthConverter Klasse kann verwendet werden, um Daten zwischen numerisch oder String-Werte zu konvertieren und DataGridLength Werte.The DataGridLengthConverter class can be used to convert data between numeric or string values and DataGridLength values.

In der Standardeinstellung die DataGrid.ColumnWidth -Eigenschaftensatz auf SizeToHeader, und die DataGridColumn.Width -Eigenschaftensatz auf Auto.By default, the DataGrid.ColumnWidth property is set to SizeToHeader, and the DataGridColumn.Width property is set to Auto. Wenn Sie den Größenanpassungsmodus auf festgelegt ist Auto oder SizeToCells, Spalten vergrößert, um die Breite des ihres breitesten sichtbaren Inhalts.When the sizing mode is set to Auto or SizeToCells, columns will grow to the width of their widest visible content. Beim Durchführen eines Bildlaufs, verursacht diese Größenanpassungsmodi Spalten aus, wenn der Inhalt zu erweitern, die größer als die aktuelle Spaltengröße in die Ansicht gescrollt wird.When scrolling, these sizing modes will cause columns to expand if content that is larger than the current column size is scrolled into view. Die Spalte wird nicht verkleinert werden, nachdem der Inhalt ein Bildlauf nicht aus der Sicht durchgeführt wird.The column will not shrink after the content is scrolled out of view.

Spalten in der DataGrid kann auch festgelegt werden, automatisch die Größe nur innerhalb der angegebenen Grenzen und können auf eine bestimmte Größe festgelegt werden.Columns in the DataGrid can also be set to automatically size only within specified boundaries, or columns can be set to a specific size. Die folgende Tabelle zeigt die Eigenschaften, die zum Steuern der Spaltengröße festgelegt werden können.The following table shows the properties that can be set to control column sizes.

EigenschaftProperty BeschreibungDescription
DataGrid.MaxColumnWidth Legt die Obergrenze für alle Spalten in der DataGrid.Sets the upper bound for all columns in the DataGrid.
DataGridColumn.MaxWidth Legt fest, der die Obergrenze für eine einzelne Spalte.Sets the upper bound for an individual column. Überschreibt DataGrid.MaxColumnWidth.Overrides DataGrid.MaxColumnWidth.
DataGrid.MinColumnWidth Legt die Untergrenze für alle Spalten in der DataGrid.Sets the lower bound for all columns in the DataGrid.
DataGridColumn.MinWidth Legt fest, der die Untergrenze für eine einzelne Spalte.Sets the lower bound for an individual column. Überschreibt DataGrid.MinColumnWidth.Overrides DataGrid.MinColumnWidth.
DataGrid.ColumnWidth Legt eine bestimmte Breite für alle Spalten in der DataGrid.Sets a specific width for all columns in the DataGrid.
DataGridColumn.Width Legt eine bestimmte Breite für eine einzelne Spalte fest.Sets a specific width for an individual column. Überschreibt DataGrid.ColumnWidth.Overrides DataGrid.ColumnWidth.

DataGrid-SpaltenheaderDataGrid Column Headers

In der Standardeinstellung DataGrid Spaltenüberschriften angezeigt werden.By default, DataGrid column headers are displayed. So blenden Sie Spaltenüberschriften aus der HeadersVisibility Eigenschaft muss festgelegt werden, um DataGridHeadersVisibility.Row oder DataGridHeadersVisibility.None.To hide column headers, the HeadersVisibility property must be set to DataGridHeadersVisibility.Row or DataGridHeadersVisibility.None. Standard Wenn Spaltenheader angezeigt werden, deren Größe automatisch an ihren Inhalt angepasst.By default, when column headers are displayed, they automatically size to fit their content. Die Spaltenüberschriften können eine bestimmte Höhe zugewiesen werden, durch Festlegen der DataGrid.ColumnHeaderHeight Eigenschaft.The column headers can be given a specific height by setting the DataGrid.ColumnHeaderHeight property.

Ändern der Größe, mit der MausResizing with the Mouse

Benutzer können die Größe DataGrid Zeilen und Spalten durch Ziehen der Headerunterteiler Zeile oder Spalte.Users can resize DataGrid rows and columns by dragging the row or column header dividers. Die DataGrid unterstützt auch das automatische Ändern der Größe von Zeilen und Spalten durch Doppelklicken auf die Zeile oder Spalte Headerunterteiler.The DataGrid also supports automatic resizing of rows and columns by double-clicking the row or column header divider. Um zu verhindern, dass einen Benutzer bestimmte Spalten Größe, legen Sie die DataGridColumn.CanUserResize Eigenschaft false für einzelnen Spalten.To prevent a user from resizing particular columns, set the DataGridColumn.CanUserResize property to false for the individual columns. Um zu verhindern, dass Benutzer die Größe aller Spalten ändern, legen Sie die DataGrid.CanUserResizeColumns Eigenschaft false.To prevent users from resizing all columns, set the DataGrid.CanUserResizeColumns property to false. Um zu verhindern, dass Benutzer die Größe aller Zeilen ändern, legen Sie die DataGrid.CanUserResizeRows Eigenschaft false.To prevent users from resizing all rows, set the DataGrid.CanUserResizeRows property to false.

Siehe auchSee also