Bagikan melalui


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(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"/>
Warisan
GridLength
Atribut

Contoh

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

<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 GridLength nilai 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 turunan Grid seperti VariableSizedWrapGrid).

GridLength dapat menjelaskan salah satu dari tiga mode untuk ukuran:

  • Lebar tetap.
  • Distribusi tertimbang (ukuran star).
  • Mode Ukuran otomatis .

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

Nilai data yang GridLength dipegang oleh Nilai dan GridUnitType keduanya bersifat baca-saja. Jika Anda ingin mengubah nilai properti yang membutuhkan GridLength waktu proses, Anda harus membuat nilai baru menggunakan salah satu konstruktor dan mengganti nilai sebelumnya.

Ukuran bintang

Ukuran bintang adalah konvensi di mana memiliki GridLength nilai angka yang menentukan faktor tertimbang versus nilai lainnya GridLength . Nilai apa pun 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 GridLength dengan di mana IsStar adalah true, GridUnitType adalah Bintang, dan Nilai 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 GridLength nilai . 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 Value, 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 C#, 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 Value ditafsirkan sebagai ukuran.

Value

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

Berlaku untuk

Lihat juga