Was bedeutet genau der Stern in Größenbegriffen in WPF?Was macht der WPF-Stern (Width = "100 *")
Antwort
In einem WPF-Grid, Width="*"
oder Height="*"
bedeutet proportional Sizing.
Zum Beispiel: -
<ColumnDefinition Width="3*" />
<ColumnDefinition Width="7*" />
Und ebenfalls für Reihen - 30% bis Spalte 1 und 70% bis Spalte 2 geben
<RowDefinition Height="3*" />
<RowDefinition Height="7*" />
Die Zahlen müssen nicht sein ganze Zahlen.
Wenn die Breite für RowDefinition (Höhe für ColumnDefinition) weggelassen wird, wird 1 * impliziert.
In diesem Beispiel ist die Spalte 1 das 1,5-fache breiter ist als Spalte 2 -
<ColumnDefinition Width="1.5*" />
<ColumnDefinition />
Sie können mit einem * (proportional) Breiten automatisch anpassen und festen Breiten mischen;
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" /> <!-- Auto-fit to content, 'Hi' -->
<ColumnDefinition Width="50.5" /> <!-- Fixed width: 50.5 device units) -->
<ColumnDefinition Width="69*" /> <!-- Take 69% of remainder -->
<ColumnDefinition Width="31*"/> <!-- Take 31% of remainder -->
</Grid.ColumnDefinitions>
<TextBlock Text="Hi" Grid.Column="0" />
Wenn Sie 2 Spalten wie folgt aus:
<ColumnDefinition Width="10*"/>
<ColumnDefinition Width="*"/>
es bedeutet, dass die erste Spalte 10x breiter als der zweite. Es ist wie "10 Teile Spalte 1 und 1 Teil Spalte 2" zu sagen.
Das coole daran ist, dass Ihre Spalten die Größe proportional ändern. Andere Optionen sind:
//Take up as much space as the contents of the column need
<ColumnDefinition Width="Auto"/>
//Fixed width: 100 pixels
<ColumnDefinition Width="100"/>
Hoffe, dass hilft!
Zusätzlich können Sie das "*" weglassen, wenn dies das Element der Einheitsgröße ist. So Pwninstein des Codebeispiel verwenden, wäre es nur sein:
<ColumnDefinition Width="10*/>
<ColumnDefinition/>
wir nehmen folgende Beispiel .....
ein Gitter - in diesem Fall werden die * Spalten an den Rest, nachdem die Auto-Sitz und feste Breiten berechnet wurden aufgeteilt und verfügt über 3 Spalten und enthalten jeweils eine Taste der Größe 100.
XAML-Code ist ...
<Grid x:Name="LayoutRoot" Width="600">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="3*" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Button Content="Button" Height="23" HorizontalAlignment="Left" Margin="10,10,0,0" Name="button1" VerticalAlignment="Top" Width="100" />
<Button Content="Button1" Height="23" HorizontalAlignment="Left" Margin="0,10,0,0" Name="button2" VerticalAlignment="Top" Width="100" Grid.Column="1" />
<Button Content="Button2" Height="23" HorizontalAlignment="Left" Margin="0,10,0,0" Name="button3" VerticalAlignment="Top" Width="100" Grid.Column="2" />
</Grid>
Aber eigentlich ist seine Größe ....
<Grid.ColumnDefinitions>
<ColumnDefinition Width="375" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="125" />
</Grid.ColumnDefinitions>
Fazit:
Gesamtgröße des Gitters 600
"Auto": Spalte ist damit die Größe neu ist enthält.(2. Spalte hat Knopf der Breite 100)
"*": 1. Spaltenbreite ist 3x der 3. Spalte.
Ausgezeichnete Antwort! – smwikipedia
macht völlig Sinn. – user3260977