【发布时间】:2012-08-28 15:11:22
【问题描述】:
我有一个包含三列的 Silverlight 5.0 网格,定义为宽度 "Auto", "*", and "Auto"。在第二列中,我有另一个四列网格,宽度为"25*"。这四列中的每一列都是一个 ComboBox。
即使宽度都定义相同,组合框“自动”会自行调整大小,当我选择一个时,框本身会缩小到比向下箭头大,尽管项目的大小适合。
<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>
...
我错过了什么?当我只有一个网格时,第一列设置为Auto,其余所有设置为Width=9*,ComboBoxes 的行为不是这样。
经过进一步观察,似乎是内部网格中的HorizontalAlignment="Center" 是罪魁祸首。如果我删除它,组合框会恢复到保持它们的大小,但它们会占据整个外列 1,而我希望它们占据必要的空间,然后在外列中居中。
【问题讨论】:
-
我在解析您到底想要什么时遇到了一些麻烦。您希望 2 个组合框以网格为中心,只占用它们必要的空间?
-
@DanTheMan - (实际上有四个组合框,我只是没有重复定义。)我想要的是三列(一个标签,一组组合框和一个按钮)中间列有四个组合框。组合框应具有相同的宽度(Width="25*"),总共只占用它们必要的空间,然后它们中的四个在外部网格的中间列居中。
-
@Rico - 带有星号的值只是相对的。我使用 25* 还是 0.25* 没有区别。
标签: silverlight