Apa arti * (asterisk) pada XAML di bawah ini?
<ColumnDefinition Width="0.07*"/>
<Grid Height="100" HorizontalAlignment="Left"
Margin="102,134,0,0"
Name="grid1" VerticalAlignment="Top"
Width="354">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="40*" />
<ColumnDefinition Width="314*" />
</Grid.ColumnDefinitions>
</Grid>
Jawaban:
Saat Anda menentukan kolom dalam kisi WPF, Anda dapat mengatur lebar ke salah satu dari tiga nilai yang mungkin:
Auto
- kolom akan menjadi selebar yang diperlukan agar sesuai dengan anak-anaknya, atau*
(bintang) menggunakan sisa ruang yang tersediaThe
*
diawali dengan angka (default adalah 1 jika tidak ada nomor yang ditentukan). Ruang yang tersedia dibagi di antara kolom yang berbintang sesuai dengan nomor awalan.Jika Anda memiliki definisi ini
Kolom pertama akan mendapatkan 7% dari total ruang yang tersedia dan kolom kedua akan mendapatkan 93%. Di sisi lain, jika Anda memiliki definisi ini:
Kolom pertama akan mendapatkan 1/3 dan kolom kedua 2/3 dari ruang yang tersedia.
Dalam kasus khusus Anda di mana lebar bingkai adalah 354 dan proporsi kedua kolom adalah 40 dan 314, Anda mendapatkan lebar kolom berikut:
Lebar bintang paling baik digunakan saat lebar bingkai tidak tetap. Ketika grid diubah ukurannya, kolom akan diskalakan secara proporsional seperti yang ditentukan oleh lebar bintang. Dalam kasus Anda, lebar kisi ditetapkan dan Anda dapat dengan mudah menggunakan kolom lebar tetap.
Jika Anda menginginkan tata letak di mana kolom kedua digandakan lebar kolom pertama dan kolom ketiga tiga kali lipat lebar kolom pertama, Anda memerlukan definisi ini:
Jika total lebar grid 300 Anda mendapatkan lebar kolom 50, 100 dan 150. Jika total lebar grid 600 Anda mendapatkan lebar kolom 100, 200 dan 300. Begitu seterusnya.
sumber
Rasio 0,07 terhadap kolom lebar bintang lainnya - yaitu jika ColomnDefinition lain memiliki Lebar 0,14 maka kolom itu digandakan lebar = semua tentang ransum
sumber
Ini menciptakan ukuran kolom menggunakan rasio. Jika Anda memiliki definisi lain seperti
<ColumnDefinition Width="0.03*"/>
kolom pertama akan memakan 70% ruang dan yang kedua akan memakan waktu 30%.sumber
sumber