我有一个3列5行的网格:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Label Grid.Row="0" Grid.Column="0">Gas Volume Fraction</Label>
<TextBox Grid.Row="0" Grid.Column="1" Text="{Binding Path=GasVolumeFraction}" MinWidth="40"></TextBox>
<Label Grid.Row="0" Grid.Column="2">-</Label>
<Label Grid.Row="1" Grid.Column="0">Density</Label>
<TextBox Grid.Row="1" Grid.Column="1" Text="{Binding Path=Density}" MinWidth="40"></TextBox>
<Label Grid.Row="1" Grid.Column="2">kg/m3</Label>
<Label Grid.Row="2" Grid.Column="0" Content="Curve speed" Style="{StaticResource curveSpeed}" ></Label>
<TextBox Grid.Row="2" Grid.Column="1" Text="{Binding Path=Density}" Style="{StaticResource curveSpeed}" MinWidth="40"></TextBox>
<Label Grid.Row="2" Grid.Column="2" Style="{StaticResource curveSpeed}">rpm</Label>
<WrapPanel Grid.Row="3" Grid.Column="0" Grid.ColumnSpan="3">
<RadioButton>Delta pressure</RadioButton>
<RadioButton>Head</RadioButton>
</WrapPanel>
<WrapPanel Grid.Row="4" Grid.Column="0" Grid.ColumnSpan="3">
<RadioButton>Efficiency</RadioButton>
<RadioButton>Power</RadioButton>
<RadioButton>Torque</RadioButton>
</WrapPanel>
</Grid>
Run Code Online (Sandbox Code Playgroud)
文本框和单选按钮具有不同的空间要求,这使得行根据其内容呈现不同的高度.如何使行大小均匀,但不大于必要的大小?换句话说:我想要为包含文本框(我的网格中最大的元素)的行设置Height ="Auto"的高度相同,然后对所有行使用该高度.
小智 36
我知道这是一个古老的问题,但我会回答任何在谷歌搜索时偶然发现的人.
实际上,使用Quartermeister提到的SharedSizeScope可以解决这个问题.
<Grid IsSharedSizeScope="True">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" SharedSizeGroup="groupName" />
<RowDefinition Height="Auto" SharedSizeGroup="groupName" />
<RowDefinition Height="Auto" SharedSizeGroup="groupName" />
</Grid.RowDefinitions>
...
</Grid>
Run Code Online (Sandbox Code Playgroud)
只需确保将Grid.IsSharedSizeScope设置为true,并确保每个RowDefinition具有相同的SharedSizeGroup,并且行应该是auto且大小相同.这也适用于列.
Qua*_*ter 13
理想情况下,您可以使用具有星形大小的行并将网格设置为VerticalAlignment="Top",但遗憾的是,当网格大小为其内容时,星形大小调整不起作用.
使用UniformGrid作为垂直布局而不是使用单个Grid,使用嵌套Grid控件进行水平布局.您可以在内部网格中的列上设置SharedSizeScope,以便在它们之间共享列大小.
<UniformGrid Rows="5" VerticalAlignment="Top" Grid.IsSharedSizeScope="True">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition SharedSizeGroup="A"/>
<ColumnDefinition SharedSizeGroup="B"/>
<ColumnDefinition SharedSizeGroup="C"/>
</Grid.ColumnDefinitions>
<Label Grid.Column="0">Gas Volume Fraction</Label>
<TextBox Grid.Column="1" Text="{Binding Path=GasVolumeFraction}" MinWidth="40"></TextBox>
<Label Grid.Column="2">-</Label>
</Grid>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition SharedSizeGroup="A"/>
<ColumnDefinition SharedSizeGroup="B"/>
<ColumnDefinition SharedSizeGroup="C"/>
</Grid.ColumnDefinitions>
<Label Grid.Column="0">Density</Label>
<TextBox Grid.Column="1" Text="{Binding Path=Density}" MinWidth="40"></TextBox>
<Label Grid.Column="2">kg/m3</Label>
</Grid>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition SharedSizeGroup="A"/>
<ColumnDefinition SharedSizeGroup="B"/>
<ColumnDefinition SharedSizeGroup="C"/>
</Grid.ColumnDefinitions>
<Label Grid.Column="0" Content="Curve speed" Style="{StaticResource curveSpeed}"></Label>
<TextBox Grid.Column="1" Text="{Binding Path=Density}" Style="{StaticResource curveSpeed}" MinWidth="40"></TextBox>
<Label Grid.Column="2" Style="{StaticResource curveSpeed}">rpm</Label>
</Grid>
<WrapPanel>
<RadioButton>Delta pressure</RadioButton>
<RadioButton>Head</RadioButton>
</WrapPanel>
<WrapPanel>
<RadioButton>Efficiency</RadioButton>
<RadioButton>Power</RadioButton>
<RadioButton>Torque</RadioButton>
</WrapPanel>
</UniformGrid>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17652 次 |
| 最近记录: |