GridLength Struktur

Definisi

Mewakili pengukuran untuk logika kontrol yang secara eksplisit mendukung ukuran Bintang (*) dan Ukuran otomatis .

public value class GridLength
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
struct GridLength
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
public struct GridLength
Public Structure GridLength
<object property="doubleValue"/>
- or -
<object property="starSizing"/>
-or-
<object property="Auto"/>
Warisan
GridLength
Atribut

Persyaratan Windows

Rangkaian perangkat
Windows 10 (diperkenalkan dalam 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (diperkenalkan dalam v1.0)

Contoh

Contoh ini memperlihatkan cara mengatur lebar kolom kisi di XAML, baik sebagai sumber daya atau langsung sebagai nilai properti Lebar.

<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>

XAML menghasilkan output ini di perancang Visual Studio:

output yang dirender dari contoh XAML gridlength

Berikut cara mengatur nilai yang sama dalam kode. Dua panjang kisi pertama setara, tetapi yang pertama menggunakan konstruktor yang disederhanakan.

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);

Keterangan

Jenis seperti ColumnDefinition dan RowDefinition menggunakan nilai GridLength untuk beberapa propertinya (ColumnDefinition.Width dan RowDefinition.Height). Nilai properti ini digunakan untuk mendukung distribusi variabel ruang yang tersedia dalam kontainer tata letak seperti Grid (dan juga jenis Grid turunan seperti VariableSizedWrapGrid).

GridLength dapat menjelaskan salah satu dari tiga mode untuk ukuran:

  • Lebar tetap.
  • Distribusi tertimbang (ukuran star).
  • Mode ukuran "Otomatis".

Nilai GridLength biasanya dideklarasikan dalam sintaks atribut XAML. Dalam XAML, distribusi tertimbang dinyatakan menggunakan simbol "*", didahului oleh angka yang menyatakan faktor pembobotan yang akan digunakan untuk GridLength tersebut. Opsi distribusi tertimbang juga dikenal sebagai ukuran star.

Nilai data yang disimpan oleh GridLength (Value dan GridUnitType) keduanya bersifat baca-saja. Jika Anda ingin mengubah nilai properti yang mengambil GridLength pada durasi, Anda harus membuat nilai baru menggunakan salah satu konstruktor dan mengganti nilai sebelumnya.

Ukuran bintang

Ukuran bintang adalah konvensi di mana GridLength memiliki nilai angka yang menentukan faktor tertimbang versus nilai GridLength lainnya. Setiap nilai GridLength yang menggunakan ukuran star membagi ruang yang tersedia, memperhitungkan faktor pembobotan, dan mengevaluasi setelah lebar tetap diterapkan. Jika tidak ada ukuran star yang memiliki faktor pembobotan, tinggi atau lebar dibagi rata di antaranya. Faktor pembobotan default adalah 1.

Tabel ini menyediakan beberapa contoh hasil ukuran star. Untuk contoh ini, asumsikan bahwa Grid induk memiliki lebar tetap 600, dan ada tiga kolom.

Kolom 0 Kolom 1 Kolom 2 Hasil
100 100 * 100,100,400
100 * * 100,250,250
100 * 4* 100,100,400

Dalam kode, ukuran star setara dengan GridLength di mana IsStarbenar, GridUnitType adalah Star, dan Value adalah faktor tertimbang yang diterapkan.

Faktor pembobotan non-bilangan bulat diizinkan; misalnya, ".5*".

Ukuran otomatis

Ukuran otomatis mendistribusikan ruang secara merata berdasarkan ukuran konten yang berada dalam kolom atau baris. Logika yang tepat untuk ukuran otomatis diimplementasikan oleh kontrol atau kelas menggunakan nilai GridLength. Biasanya kelas tersebut adalah Grid, karena menginterpretasikan komponen RowDefinition dan ColumnDefinition-nya .

Catatan tentang sintaks XAML

Meskipun Anda dapat menentukan GridLength sebagai elemen objek, Anda tidak dapat menentukan nilai individual, seperti Nilai, sebagai atribut elemen objek tersebut. Parser XAML tidak mendukung pengaturan nilai atribut XAML untuk struktur ini. Sebagai gantinya, Anda harus menentukan nilai sebagai teks inisialisasi dalam GridLength. Untuk informasi selengkapnya tentang teks inisialisasi XAML, lihat panduan sintaks XAML.

Proyeksi dan anggota GridLength

Jika Anda menggunakan bahasa Microsoft .NET (C# atau Microsoft Visual Basic), atau ekstensi komponen Visual C++ (C++/CX), maka GridLength memiliki anggota non-data yang tersedia, dan anggota datanya diekspos sebagai properti baca-saja, bukan bidang. Lihat GridLength di Browser .NET API.

Jika Anda memprogram dengan C++/WinRT atau Windows Runtime C++ Template Library (WRL), maka hanya bidang anggota data yang ada sebagai anggota GridLength, dan Anda tidak dapat menggunakan metode utilitas atau properti proyeksi .NET. Kode C++ dapat mengakses metode utilitas serupa yang ada di kelas GridLengthHelper .

Tabel ini memperlihatkan properti dan metode yang setara yang tersedia di .NET dan C++.

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

Bidang

GridUnitType

Nilai enumerasi GridUnitType yang memenuhi syarat bagaimana Nilai ditafsirkan sebagai ukuran.

Value

Ukuran untuk GridLength ini, yang belum tentu merupakan ukuran piksel.

Berlaku untuk

Lihat juga