Apa arti * (asterisk) di XAML ColumnDefinition?

106

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>
Shashank
sumber
jika Lebar Kolom kedua saya adalah Dua Kali Lebar Kolom Pertama Dan Ketiga Tiga Dari Yang Pertama Lalu Bagaimana Saya Dapat Menggunakan Astrik
Shashank

Jawaban:

168

Saat Anda menentukan kolom dalam kisi WPF, Anda dapat mengatur lebar ke salah satu dari tiga nilai yang mungkin:

  • Lebar tetap,
  • Auto - kolom akan menjadi selebar yang diperlukan agar sesuai dengan anak-anaknya, atau
  • * (bintang) menggunakan sisa ruang yang tersedia

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

<Grid.ColumnDefinitions>
  <ColumnDefinition Width="0.07*"/>
  <ColumnDefinition Width="0.93*"/>
</Grid.ColumnDefinitions>

Kolom pertama akan mendapatkan 7% dari total ruang yang tersedia dan kolom kedua akan mendapatkan 93%. Di sisi lain, jika Anda memiliki definisi ini:

<Grid.ColumnDefinitions>
  <ColumnDefinition Width="0.07*"/>
  <ColumnDefinition Width="0.14*"/>
</Grid.ColumnDefinitions>

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 kolom pertama = 40 / (40 + 314) * 354 = 40
Lebar coulmn kedua = 314 / (40 + 314) * 354 = 314

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:

<Grid.ColumnDefinitions>
  <ColumnDefinition Width="*"/>
  <ColumnDefinition Width="2*"/>
  <ColumnDefinition Width="3*"/>
</Grid.ColumnDefinitions>

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.

Martin Liversage
sumber
3

Rasio 0,07 terhadap kolom lebar bintang lainnya - yaitu jika ColomnDefinition lain memiliki Lebar 0,14 maka kolom itu digandakan lebar = semua tentang ransum

Dean Chalk
sumber
1

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

Jakub
sumber
0

[..] nilai yang dinyatakan sebagai proporsi tertimbang dari ruang yang tersedia.

HB
sumber