Warum zwei Spalten in einer WPF-Grid mit * haben nicht die gleiche Größe?
mit dem folgenden code, den ich voraussichtlich bis Ende mit zwei ListBox mit der gleichen Breite, wie Sie in zwei columndefinition mit Mit="*"
Anstatt das sieht aus wie die Größe hängt von der Größe der text der ListBox, die nicht sinnvoll als dieser text ist viel kleiner als die ListBox und damit der TextBlock hat genug Platz für den text.
<Window x:Class="UnderstandSizing.Window5"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window5"
SizeToContent="WidthAndHeight"
ResizeMode="NoResize" >
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<TextBlock Text="Text1longer" Grid.Row="0" Grid.Column="0" x:Name="Test1" />
<TextBlock Text="Text1" Grid.Row="0" Grid.Column="2" />
<ListBox Grid.Row="1" Grid.Column="0" Height="150" />
<ListBox Grid.Row="1" Grid.Column="2" Height="150" />
<TextBlock Grid.Row="2" Grid.ColumnSpan="3" Text="This textblock sets the max width" Width="300" />
</Grid>
</Window>
WPF-automatische Größenanpassung-Funktion ist das fahren mich verrückt ... irgendwelche Ideen?
Danke.
EDIT: Alles in VS2008, nur für den Fall ist es wichtig.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Schau mal hier:
http://www.wpftutorial.net/GridLayout.html
"Star (*):
Braucht so viel Platz, wie vorhanden (nach dem ausfüllen aller auto-und Feste Größe Spalten), proportional verteilt über alle star-Größe Spalten. So 3*/5* bedeutet das gleiche wie 30*/50*. Denken Sie daran, dass der star-sizing funktioniert nicht, wenn die grid-Größe berechnet, basierend auf deren Inhalt."
Ist der Fall in Ihrem code. Ich vermute, dies ist auch der Grund, sah es gut für andere, es zu testen, wenn Sie eingefügt das Netz in eine Fenster größer als 300 Pixel festlegen, indem Ihr TextBlock. Bekomme ich die gleiche Ausgabe, die Sie tun, wenn ich genau den gleichen XAML.
Edit:, So dass für das "warum". Sehen Sie, diese Frage für eine mögliche alternative Lösung: Wpf: Grid: Wie kann ich die Spalte/Zeile Höhe Breite?
Der letzten Antwort (nicht ausgewählt vom Fragesteller) als am meisten hilfreich in diesem Fall.
Alex. Eine gefunden die genaue Ursache, was geschieht, und ich fand eine Lösung in eine lucky strike. Ändern Sie einfach die * für 0 erhalte ich das erwartete Ergebnis (seltsam, wenn Sie mich Fragen):
Für mich funktioniert dies ganz gut, zur Laufzeit ist. Vertrauen Sie nicht GUI-Designer, Sie sind der Feind.
Funktioniert bei mir zur design-und zur Laufzeit.
Den GUI-designer sollte nicht zeigen diejenigen pixel Größen. Für mich zeigt es
1*
, was bedeutet dein screenshot ist aus dem code der anders ist als Sie eingefügt.