グリッドスプリッターの実験を始めたばかりで、非常に奇妙な動作に出くわし、修正できないようです。どうやら他の人にも同様の問題があります (Google によると) が、役立つコメントはありませんでした。
2行のグリッドがあります。起動すると、一番下Hight
の行は 250 です。一番上の行は で残りを取ります*
。スプリッターで行のサイズを変更すると、一番上の行の動作が期待どおりになります。しかし、スプリッターを上にドラッグしてプログラム ウィンドウを通過すると、一番下の行のコンテンツがウィンドウから外れます (= 消えるまで下に移動します)。各行を親コンテナーよりも大きくすることはできないと思います。
<Grid x:Name="grid_main" ScrollViewer.VerticalScrollBarVisibility="Disabled" >
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition MinHeight="250" Height="250"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<GridSplitter x:Name="splitter"
ResizeDirection="Rows" Grid.Column="0" Grid.ColumnSpan="1" Grid.Row="0" Width="Auto"
Height="5" HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Margin="0" ResizeBehavior="BasedOnAlignment" />
<Grid Grid.Column="0" Grid.Row="0">
</Grid>
<Grid Grid.Column="0" Grid.Row="1">
</Grid>
</Grid>
これは私のコードです。両方の行のコンテンツは再びグリッドでホストされており、わかりやすくするために削除されています。繰り返しますが、一番上の行のサイズ変更は正常に機能します。ただし、一番下の行は無限大にサイズ変更できます。をハードコーディングすると、期待どおりに動作しますMaxHeight
。ただし、それはウィンドウのサイズに依存する必要があります。