widths で定義された 3 つの列を持つ Silverlight 5.0 Grid があります"Auto", "*", and "Auto"
。2 番目の列内には、幅で定義された 4 つの列を持つ別の Grid があります"25*"
。これら 4 つの列はそれぞれ ComboBox です。
幅はすべて同じに定義されていますが、ComboBoxes の「自動」サイズはそれ自体であり、1 つを選択すると、ボックス自体は下向き矢印よりもわずかに大きくなりますが、アイテムは収まるサイズになっています。
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<ContentControl Grid.Column="0" FontSize="20" VerticalAlignment="Center" HorizontalAlignment="Center" Margin="10,1,0,1">
<ContentPresenter Content="This is a Label" />
</ContentControl>
<Grid Grid.Column="1" HorizontalAlignment="Center">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="25*"/>
<ColumnDefinition Width="25*"/>
<ColumnDefinition Width="25*"/>
<ColumnDefinition Width="25*"/>
</Grid.ColumnDefinitions>
<ComboBox Grid.Column="0" Name="comboView" FontSize="14" Margin="2,1,2,1" >
<ComboBox.Items>
<ComboBoxItem Content="Item1" IsSelected="True" />
<ComboBoxItem Content="Item2" />
</ComboBox.Items>
</ComboBox>
<ComboBox Grid.Column="1" Name="comboField" FontSize="14" Margin="2,1,2,1" >
<ComboBox.Items>
<ComboBoxItem Content="Field1" IsSelected="True" />
<ComboBoxItem Content="Field2" />
</ComboBox.Items>
</ComboBox>
...
私は何を逃したのですか?グリッドが 1 つだけで、最初の列が に設定されAuto
、残りのすべてが のように設定されているWidth=9*
場合、ComboBoxes はこのように動作しませんでした。
さらに観察するとHorizontalAlignment="Center"
、内側のグリッドが原因であることがわかります。それを削除すると、ComboBoxes はサイズを保持するように戻りますが、必要なスペースを占有してから外側の列の中央に配置する場合、外側の列 1 全体を占有します。