6

グリッドスプリッターの実験を始めたばかりで、非常に奇妙な動作に出くわし、修正できないようです。どうやら他の人にも同様の問題があります (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。ただし、それはウィンドウのサイズに依存する必要があります。

4

4 に答える 4

4

RowDefinition秒を次のように変更してみてください。

<RowDefinition MinHeight="250" MaxHeight="{Binding ElementName=grid_main, Path=ActualHeight}" Height="250"/>

これにより、行の高さがウィンドウ サイズを超えないようになります。

于 2013-05-31T08:16:39.343 に答える