Jakie jest znaczenie znaku * (gwiazdka) w poniższym kodzie 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>
Odpowiedzi:
Podczas definiowania kolumny w siatce WPF można ustawić szerokość na jedną z trzech możliwych wartości:
Auto
- kolumna stanie się tak szeroka, jak to konieczne, aby pasowała do jej elementów podrzędnych, lub*
(gwiazdka) zajmuje pozostałą przestrzeń*
Jest poprzedzony numerem (domyślnie jest 1, jeśli liczba nie jest określona). Dostępna przestrzeń jest dzielona między kolumny oznaczone gwiazdką proporcjonalnie do numeru prefiksu.Jeśli masz tę definicję
Pierwsza kolumna otrzyma 7% całkowitej dostępnej przestrzeni, a druga kolumna - 93%. Z drugiej strony, gdybyś miał taką definicję:
Pierwsza kolumna otrzyma 1/3, a druga 2/3 dostępnego miejsca.
W konkretnym przypadku, w którym szerokość siatki wynosi 354, a proporcje dwóch kolumn wynoszą 40 i 314, otrzymasz następujące szerokości kolumn:
Szerokość gwiazdy jest najlepiej używana, gdy szerokość siatki nie jest ustalona. Gdy rozmiar siatki zostanie zmieniony, kolumny zostaną skalowane proporcjonalnie zgodnie z szerokością gwiazd. W twoim przypadku szerokość siatki jest stała i równie łatwo możesz 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 kolumna jest trzykrotnie większa niż pierwsza, potrzebujesz tej definicji:
Jeśli całkowita szerokość siatki wynosi 300, otrzymasz kolumny o szerokości 50, 100 i 150. Jeśli całkowita szerokość siatki wynosi 600, otrzymasz kolumny o szerokości 100, 200 i 300. I tak dalej.
źródło
Jego stosunek 0,07 do dowolnej innej kolumny o szerokości gwiazdy - tj. Jeśli inna kolumna ColomnDefinition ma szerokość 0,14, wówczas ta kolumna ma podwójną szerokość = chodzi o racje
źródło
Tworzy rozmiary kolumn za pomocą współczynników. Gdybyś miał inną definicję, taką jak
<ColumnDefinition Width="0.03*"/>
pierwsza kolumna, zajmowałaby 70% miejsca, a druga 30%.źródło
źródło