我有以下网格:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="2*" />
<ColumnDefinition Width="1*" />
<ColumnDefinition Width="3*" />
</Grid.ColumnDefinitions>
</Grid>
我想将两个 TextBlock 放入此 Grid 中,以便两个 TextBlock 的水平中心恰好位于列边缘(垂直对齐无关紧要):
我最接近的结果如下:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="2*" />
<ColumnDefinition Width="auto" />
<ColumnDefinition Width="1*" />
<ColumnDefinition Width="auto" />
<ColumnDefinition Width="3*" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="1"
Text="textOfTextBlock1"/>
<TextBlock Grid.Column="3"
Text="textOfTextBlock2"/>
</Grid>
导致
但是如果我们仔细观察,两个图像中的 TextBlock 的位置并不相同,因为宽度为 2*、1* 和 3* 的列的实际列宽是根据剩余的总空间计算的after 文本块获取其宽度。
我不想在解决方案中指定精确的坐标,当然,当网格大小调整时,文本块的位置应该改变。
我也在思考以下问题:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="2*" />
<ColumnDefinition Width="0" />
<ColumnDefinition Width="1*" />
<ColumnDefinition Width="0" />
<ColumnDefinition Width="3*" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="1"
Text="textOfTextBlock1"/>
<TextBlock Grid.Column="3"
Text="textOfTextBlock2"/>
</Grid>
但是列正在切割/剪裁 TextBlock 的边缘,因此第二列和第四列的列宽为 0 时,TextBlock 不可见。
假设 TextBlock 的宽度始终低于某个最大值,您可以设置固定的
Width
和适当的 Margin
和对齐方式:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="2*" />
<ColumnDefinition Width="1*" />
<ColumnDefinition Width="3*" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="1" Text="textOfTextBlock1"
Width="200" Margin="-100,0"
HorizontalAlignment="Left" TextAlignment="Center"/>
<TextBlock Grid.Column="2" Text="textOfTextBlock2"
Width="200" Margin="-100,0"
HorizontalAlignment="Left" TextAlignment="Center"/>
</Grid>