Moje google i stackoverflow search-fu mnie zawiodły, więc przedstawiam społeczności to pytanie.Siatka wewnątrz StackPanel: dlaczego auto i * zachowują się dziwnie?
(To wszystko jest generowane przy użyciu VS2010 i .NET 4.0, w pustym domyślnie WPF roztwór)
Rozważmy następujący XAML:
<StackPanel Orientation="Horizontal">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="20"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Border Name="aborder" Grid.Column="0" Grid.ColumnSpan="2"
Background="Red" Width="200"/>
<Border Name="aborder2" Background="Green"/>
</Grid>
</StackPanel>
Co byś przewidzieć szerokość "aborder2" do być?
Jeśli zgadłeś "20 pikseli", byłbyś w błędzie. Prawidłowa odpowiedź to 110 pikseli.
Rozważmy XAML:
<StackPanel Orientation="Horizontal">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="20"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Border Name="aborder" Grid.Column="0" Grid.ColumnSpan="2"
Background="Red" Width="200"/>
<Border Name="aborder2" Background="Green"/>
</Grid>
</StackPanel>
Co byś przewidzieć szerokość "aborder2" być?
Jeśli zgadłeś 20 pikseli lub 110 pikseli, byłbyś w błędzie. Prawidłowa odpowiedź to 200 pikseli.
Nie mogę tego zrozumieć i to doprowadza mnie do szaleństwa. Wygląda na to, że odpowiedź powinna być oczywista; widać, że istnieje pewna interakcja między kolumną siatki z automatycznym napełnianiem a panelem kominowym, który powoduje zasadzkę w sieci. Ale po prostu nie wydaje się, aby sensie - niezależnie od tego, jakie zasady rządzą tym zachowaniem, wydają się być arbitralne. Dlaczego 110 pikseli? Dlaczego nie 109 pikseli lub 100 pikseli? Rozumiem, że kolumna o automatycznym rozmiarze nie mogła się w pełni rozwinąć lub coś takiego, ale aby kolumna o stałej szerokości losowo zignorowała jej szerokość, pozostawiłam wypaloną powłokę programisty.
Każda pomoc lub światło prowadzące będą mile widziane!
Dlaczego nie aborder2 uzyskać Grid.Column? – 0x4f3759df
Nie pomyślałem, aby umieścić jeden, ponieważ powinien domyślnie do kolumny 0. Właśnie przetestowałem to i jawnie ustawienie kolumny nie wydaje się robić różnicy. – pfw
Masz dla ciebie odpowiedź, ale najpierw muszę iść do domu –