Co oznacza * (gwiazdka) w XAML ColumnDefinition?
Jakie jest znaczenie * (gwiazdka) w poniższym XAML?
<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>
4 answers
Gdy zdefiniujesz kolumnę w siatce WPF, możesz ustawić szerokość na jedną z trzech możliwych wartości:
- Stała szerokość,
-
Auto
– kolumna stanie się tak szeroka, aby pasowała do jej dzieci, lub -
*
(gwiazdka) zajmuj każdą wolną przestrzeń
*
jest poprzedzony liczbą (domyślnie jest to 1, jeśli nie podano liczby). Dostępna przestrzeń jest dzielona między kolumny oznaczone gwiazdką proporcjonalnie do numeru prefiksu.
Jeśli masz to definicja
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.07*"/>
<ColumnDefinition Width="0.93*"/>
</Grid.ColumnDefinitions>
Pierwsza kolumna otrzyma 7% całkowitej dostępnej przestrzeni, a druga kolumna otrzyma 93%. Z drugiej strony, jeśli masz taką definicję:
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.07*"/>
<ColumnDefinition Width="0.14*"/>
</Grid.ColumnDefinitions>
Pierwsza kolumna otrzymałaby 1/3, a druga 2/3 dostępnego miejsca.
W twoim konkretnym przypadku, gdy szerokość siatki wynosi 354, a proporcje dwóch kolumn wynoszą 40 i 314, otrzymujesz następujące szerokości kolumn:
First column width = 40/(40 + 314)*354 = 40 Second coulmn width = 314/(40 + 314)*354 = 314
Szerokość Gwiazdy najlepiej stosować, gdy szerokość siatka nie jest naprawiona. Gdy siatka zostanie zmieniona, kolumny będą skalowane proporcjonalnie zgodnie z szerokościami gwiazd. W Twoim przypadku szerokość siatki jest stała i równie łatwo można było użyć kolumn o stałej szerokości.
Jeśli chcesz mieć układ, w którym druga kolumna ma podwójną szerokość pierwszej, a trzecia ma potrójną szerokość pierwszej, potrzebujesz tej definicji:
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="3*"/>
</Grid.ColumnDefinitions>
Jeśli całkowita szerokość siatki wynosi 300, otrzymasz szerokości kolumn 50, 100 i 150. Jeśli Całkowita szerokość siatki wynosi 600 otrzymujesz szerokości kolumn 100, 200 i 300. I tak dalej.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-26 07:17:15
Jej stosunek 0,07 do dowolnej innej kolumny o szerokości Gwiazdy-tzn. jeśli inna kolumna ma szerokość 0,14 to kolumna jest dwukrotnie większa od szerokości = jej wszystko o racjach
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-08-05 13:14:57
Tworzy rozmiary kolumn za pomocą współczynników. Gdybyś miał inną definicję jak <ColumnDefinition Width="0.03*"/>
Pierwsza kolumna zajmowałaby 70% przestrzeni, a druga 30%.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-08-05 13:14:57
[..] wartość wyrażona jako ważona część dostępnej przestrzeni.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-08-05 13:21:44