【发布时间】:2013-01-06 05:23:25
【问题描述】:
在下面的 WPF 网格中,中间列不是 6。文本 B 一直在右边,而不是距离文本 A 6。我已经尝试 * 而不是 Auto 其他列,但结果是一样的.
如何使中间列 6?有解决方法吗?为什么会这样?这是预期的行为还是错误?
我以这种方式制作网格,这样我就不必为每个元素设置边距。
<ScrollViewer HorizontalScrollBarVisibility="Auto">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="6" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="6" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<TextBlock Grid.ColumnSpan="3" Grid.Column="0" HorizontalAlignment="Left">xxxxxxxxxxxxxxxxxxxxxxxxxxxx</TextBlock>
<TextBlock Grid.Row="2">Text A</TextBlock>
<Rectangle Fill="YellowGreen" Grid.Column="1" Grid.Row="2" HorizontalAlignment="Stretch" />
<TextBlock Grid.Row="2" Grid.Column="2" Background="LightCoral">Text B</TextBlock>
</Grid>
</ScrollViewer>
注意:我的窗口宽度是自动的。
编辑: 使用@flq's solution 但添加了水平滚动的scrollviewer,问题又回来了。这可能与解决方案无法在设计器中正确显示的原因相同,与 WPF 不知道如何在没有约束宽度的情况下计算宽度有关。
【问题讨论】:
-
尝试在引号内的 6 周围加上星号,而不是仅仅 "6" 我认为这应该可以解决它
-
我把它拿回来了,刚刚试了一下,它把第二列右对齐到跨越的文本,扩大了中间列...
-
@flq 澄清 - 文本 B 一直在右侧,而不是距离文本 A 6。