我在自定义网格面板中包含2个网格,如下所示:
<ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto">
<!-- Width and Height of this grid are bound to ScrollViewer's ViewportWidth/Height -->
<CustomGrid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="4*" />
<ColumnDefinition Width="*" MinWidth="300"/>
</Grid.ColumnDefinitions>
<Grid x:Name="ProblematicGrid" Grid.Column="0" MinWidth="500">
<!-- This grid has 5 star-sized columns with MinWidths that sum up to 500 -->
</Grid>
<Grid x:Name="OtherGrid" Grid.Column="1" />
</CustomGrid>
</ScrollViewer>
CustomGrid
只是我为诊断目的编写的自定义面板。它继承Grid
并覆盖MeasureOverride
和ArrangeOverride
。在ArrangeOverride
中,它将硬编码值500和300分别传递给 ProblematicGrid 和 OtherGrid 。
我所看到的行为是:
当我运行包含此UserControl
且初始窗口大小小于800的应用程序时, ProblematicGrid 和 OtherGrid 呈现各自的{{ 1}}秒。
如果我展开应用程序然后再将其缩小, ProblematicGrid MinWidth
永远不会回到其ActualWidth
500,即使它直接在MinWidth
的{{1}}传递给它。
我的问题是为什么会发生这种情况?我错过了什么或做错了什么?