Freigeben über


GridLength Struktur

Definition

Stellt eine Messung für die Steuerungslogik dar, die explizit Star- (*) Größenanpassung und Auto- Größenanpassung unterstützt.

public value class GridLength
/// [Windows.Foundation.Metadata.ContractVersion(Microsoft.UI.Xaml.WinUIContract, 65536)]
struct GridLength
[Windows.Foundation.Metadata.ContractVersion(typeof(Microsoft.UI.Xaml.WinUIContract), 65536)]
public struct GridLength
Public Structure GridLength
<object property="doubleValue"/>
- or -
<object property="starSizing"/>
-or-
<object property="Auto"/>
Vererbung
GridLength
Attribute

Beispiele

In diesem Beispiel wird gezeigt, wie Rasterspaltenbreiten in XAML entweder als Ressource oder direkt als Width Eigenschaftswert festgelegt werden.

<Grid>
    <Grid.Resources>
        <GridLength x:Key="gridLength200">200</GridLength>
        <GridLength x:Key="gridLength2star">2*</GridLength>
    </Grid.Resources>
    <Grid.ColumnDefinitions>
        <ColumnDefinition x:Name="gridColumn0" Width="{StaticResource gridLength200}"/>
        <ColumnDefinition x:Name="gridColumn1" Width="200"/>
        <ColumnDefinition x:Name="gridColumn2" Width="Auto"/>
        <ColumnDefinition x:Name="gridColumn3" Width="3*"/>
        <ColumnDefinition x:Name="gridColumn4" Width="{StaticResource gridLength2star}"/>
        <ColumnDefinition x:Name="gridColumn5" Width="*"/>
    </Grid.ColumnDefinitions>
    <Border Background="Red" Grid.Column="0"/>
    <Border Background="Orange" Grid.Column="1"/>
    <Border Background="Yellow" Grid.Column="2" Width="100"/>
    <Border Background="Green" Grid.Column="3"/>
    <Border Background="Blue" Grid.Column="4"/>
    <Border Background="Violet" Grid.Column="5"/>
</Grid>

Der XAML-Code erzeugt diese Ausgabe im Visual Studio-Designer:

gerenderte Ausgabe des gridlength-XAML-Beispiels

Hier erfahren Sie, wie Sie die gleichen Werte im Code festlegen. Die ersten beiden Rasterlängen sind gleichwertig, aber im ersten wird der vereinfachte Konstruktor verwendet.

gridColumn0.Width = new GridLength(200);
gridColumn1.Width = new GridLength(200, GridUnitType.Pixel);
gridColumn2.Width = new GridLength(0, GridUnitType.Auto);
gridColumn3.Width = new GridLength(3, GridUnitType.Star);
gridColumn4.Width = new GridLength(2, GridUnitType.Star);
gridColumn5.Width = new GridLength(1, GridUnitType.Star);

Hinweise

Typen wie ColumnDefinition und RowDefinition verwenden GridLength Werte für einige ihrer Eigenschaften (ColumnDefinition.Width und RowDefinition.Height). Diese Eigenschaftswerte werden verwendet, um die variable Verteilung des verfügbaren Platzes in Layoutcontainern wie Grid (und auch abgeleitete Typen von Grid wie VariableSizedWrapGrid) zu unterstützen.

Ein GridLength kann einen von drei Modi für die Größenanpassung beschreiben:

  • Eine feste Breite.
  • Eine gewichtete Verteilung (Sterngröße).
  • Ein Automatischer Größenanpassungsmodus.

GridLength Werte werden in der Regel in der XAML-Attributsyntax deklariert. In XAML wird die gewichtete Verteilung mit einem "*"-Symbol deklariert, dem eine Zahl vorangestellt wird, die den Gewichtungsfaktor deklariert, der für dieses GridLengthverwendet werden soll. Die Gewichtungsverteilungsoption wird auch als Sterngrößebezeichnet.

Die Von einem GridLengthValue und GridUnitType- gespeicherten Datenwerte sind schreibgeschützt. Wenn Sie den Wert einer Eigenschaft ändern möchten, die zur Laufzeit eine GridLength verwendet, müssen Sie einen neuen Wert mit einem der Konstruktoren erstellen und den vorherigen Wert ersetzen.

Sterngröße

Die Sterngröße ist eine Konvention, bei der ein GridLength einen Zahlenwert aufweist, der einen gewichteten Faktor im Vergleich zu anderen GridLength Werten angibt. Alle GridLength Werte, die die Größenanpassung von Stern verwenden, dividieren den verfügbaren Platz, wobei die Gewichtungsfaktoren und die Auswertung nach der Anwendung fester Breiten erfolgt. Wenn keiner der Sterngrößen Gewichtungsfaktoren aufweist, wird die Höhe oder Breite gleichmäßig untereinander aufgeteilt. Der Standardgewichtungsfaktor ist 1.

Diese Tabelle enthält einige Beispiele für Ergebnisse der Größenanpassung von Sternen. Gehen Sie für diese Beispiele davon aus, dass das übergeordnete Grid eine feste Breite von 600 aufweist und dass drei Spalten vorhanden sind.

Spalte 0 Spalte 1 Spalte 2 Ergebnis
100 100 * 100,100,400
100 * * 100,250,250
100 * 4* 100,100,400

Im Code entspricht eine Sterngröße einem GridLength, bei dem IsStar-trueist, GridUnitType-Star-ist und Wert- der gewichtete Faktor angewendet wird.

Nicht ganzzahlige Gewichtungsfaktoren sind zulässig; Beispiel: ".5*".

Automatische Größenanpassung

Die automatische Größenanpassung verteilt den Platz gleichmäßig basierend auf der Größe des Inhalts, der sich innerhalb einer Spalte oder Zeile befindet. Die genaue Logik für die automatische Größenanpassung wird vom Steuerelement oder der Klasse mithilfe der GridLength Werte implementiert. In der Regel ist diese Klasse Grid, da sie die RowDefinition- und ColumnDefinition-komponenten interpretiert.

Hinweise zur XAML-Syntax

Obwohl Sie eine GridLength als Objektelement angeben können, können Sie die einzelnen Werte, z. B. Value, nicht als Attribute dieses Objektelements angeben. Der XAML-Parser unterstützt das Festlegen von XAML-Attributwerten für diese Struktur nicht. Stattdessen müssen Sie die Werte als Initialisierungstext innerhalb der GridLengthangeben. Weitere Informationen zum XAML-Initialisierungstext finden Sie in XAML-Syntaxhandbuch.

Projektion und Elemente von GridLength

Wenn Sie C# verwenden, steht GridLength nicht-Datenmmber zur Verfügung, und die zugehörigen Datenmmber werden als schreibgeschützte Eigenschaften verfügbar gemacht, nicht als Felder. Siehe GridLength- im .NET-API-Browser.

Wenn Sie mit C++/WinRT- oder der Windows-Runtime-C++-Vorlagenbibliothek (WRL) programmieren, sind nur die Datenmemberfelder als Member GridLengthvorhanden, und Sie können die Hilfsmethoden oder -eigenschaften der .NET-Projektion nicht verwenden. C++-Code kann auf ähnliche Hilfsmethoden zugreifen, die in der GridLengthHelper Klasse vorhanden sind.

Diese Tabelle enthält die entsprechenden Eigenschaften und Methoden, die in .NET und C++ verfügbar sind.

.NET (GridLength-) C++ (GridLengthHelper)
GridLength(Double) FromPixels(Double)
GridLength(Double, GridUnitType) FromValueAndType(Double, GridUnitType)
automatischen automatischen
entspricht Equals(GridLength, GridLength)
IsAbsolute GetIsAbsolute(GridLength)
IsAuto GetIsAuto(GridLength)
IsStar- GetIsStar(GridLength)

Felder

GridUnitType

Ein Wert der GridUnitType- Enumeration, die die Interpretation Value als Measure qualifiziert.

Value

Das Measure für dieses GridLength-Maß, das nicht unbedingt ein Pixelmaß ist.

Gilt für:

Weitere Informationen