2009-07-22 9 views
59

Używam Wysokość = "*" trochę, aby oznaczać, że wysokość ostatniego rzędu powinna być wypełniona do dolnej części siatki.Co oznacza RowDefinition Height = "10 *" w siatce XAML?

Ale co oznacza "10 *"?

<Grid Name="mainGrid"> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="100" /> 
     <RowDefinition Height="40" /> 
     <RowDefinition Height="10*" /> 
    </Grid.RowDefinitions> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="200" /> 
     <ColumnDefinition Width="*" /> 
    </Grid.ColumnDefinitions> 
</Grid> 

Odpowiedz

93

"*" jest skrótem "1*". Jest to stosunek, więc jeśli masz dwa rzędy, jeden z "*" i jeden z "10*", pierwszy dostaje 1/11 dostępnego, a drugi dostaje 10/11 miejsca.

W powyższym przykładzie, "10*" jest niepotrzebny - "*" byłby bardziej sensowny, ponieważ istnieje tylko jeden wiersz, w którym stosuje się podziałowanie oparte na współczynniku, więc dowolny stosunek będzie równy 100% dostępnego miejsca.

+2

Bardzo pomocna odpowiedź. Ograniczone przykłady oficjalnych dokumentów nie oznaczają wyraźnie "*", aby wskazać odstępy oparte na stosunku. – ford

+0

@ Jeśli tak, ale musisz zmienić wersję na silverlight [link] http://msdn.microsoft.com/en-us/library/system.windows.controls.grid.rowdefinitions (v = vs.95). aspx –

19

Znalazłem poniższe informacje od Christiana Moessa, które mogą być pomocne, ponieważ rozmiary Auto i Fixed w innych wierszach lub kolumnach komórek mają wpływ na zachowanie rozmiaru *. Zobacz http://wpftutorial.net/GridLayout.html


Fixed stałym rozmiarze jednostek logicznych (1/96 cala)

Auto Staje się jak najwięcej miejsca potrzebnego zamkniętego kontroli

Gwiazd (*) Zajmuje tyle miejsca, ile jest dostępne (po wypełnieniu wszystkich kolumn automatycznych i o ustalonych rozmiarach), pro podzielone na porcje na wszystkie kolumny o wielkości gwiazdek. Tak więc 3 */5 * oznacza to samo co 30 */50 *. Pamiętaj, że rozmiar gwiazdy nie działa, jeśli rozmiar siatki jest obliczany na podstawie jego zawartości.

<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="Auto" /> 
     <RowDefinition Height="Auto" /> 
     <RowDefinition Height="*" /> 
     <RowDefinition Height="28" /> 
    </Grid.RowDefinitions> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="Auto" /> 
     <ColumnDefinition Width="200" /> 
    </Grid.ColumnDefinitions> 
</Grid> 
-12

w XAML * stosuje się do procentu (%), tak 10* oznacza 10% całkowitej siatki. Wiersz użyje 10% siatki.

+2

Głosowałbym za usunięciem tej odpowiedzi, jeśli to możliwe, aby nikomu tego nie widzieć. – GEEF