2011-08-05 12 views
90

Jakie jest znaczenie * (gwiazdka) w poniższym XAML?Znaczenie * (gwiazdka) w definicji kolumny WPF?

<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> 
+0

jeśli moja druga szerokość kolumny to podwójna pierwsza i trzecia kolumna Szerokość to potrójna część pierwsza to jak mogę użyć Astrika – Shashank

Odpowiedz

137

Podczas definiowania kolumny w siatce WPF można ustawić szerokość do jednej z trzech możliwych wartości:

  • stałą szerokość,
  • Auto - kolumna będzie tak szeroko, jak to konieczne, aby dopasować jego dzieci lub
  • * (gwiazdka) podjęcia wszelkich dostępnych pozostałą przestrzeń

* jest poprzedzony numerem (domyślnie 1 jeśli nie podano liczby). Dostępna przestrzeń jest podzielona między kolumny oznaczone gwiazdką proporcjonalnie do numeru prefiksu.

Jeśli masz tę definicję

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

Pierwsza kolumna otrzyma 7% całkowitej dostępnej przestrzeni, a druga kolumna dostanie 93%. Z drugiej strony, jeśli masz tę definicję:

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

Pierwsza kolumna otrzyma 1/3 i drugie 2/3 dostępnego miejsca.


W swoim szczególnym przypadku, gdy szerokość siatki jest 354 i proporcje tych dwóch kolumn 40 i 314 można uzyskać następujące szerokości kolumn:

 
First column width = 40/(40 + 314)*354 = 40 
Second coulmn width = 314/(40 + 314)*354 = 314 

Szerokość gwiazda jest najlepiej wykorzystywane gdy szerokość siatki nie jest stała. Gdy rozmiar siatki zostanie zmieniony, 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 układ gdzie druga kolumna jest podwójna szerokość pierwszej i trzeciej kolumnie jest potrójnej szerokości najpierw trzeba tę definicję:

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

Jeżeli całkowita szerokość siatki jest 300, otrzymasz szerokość kolumny 50, 100 i 150. Jeśli całkowita szerokość siatki wynosi 600, otrzymasz szerokość kolumny 100, 200 i 300. I tak dalej.

2

Jego 0,07 stosunek do innych kolumnie gwiazdy szerokość - to znaczy, jeśli inny ColomnDefinition ma szerokość 0,14 wówczas kolumna ma podwójną szerokość = wszystko o porcje

1

Stwarza to rozmiary kolumny stosując wskaźniki. Jeśli masz inną definicję, taką jak <ColumnDefinition Width="0.03*"/>, pierwsza kolumna zajmie 70% powierzchni, a druga zajmie 30%.

0

[..] wartość wyrażona jako ważona część dostępnej przestrzeni.

Powiązane problemy