1

まず、私は XAML を初めて使用するので、愚かなことをした場合はご容赦ください。

ページを次の例の XAML (XamlPad で表示可能) に分解しました。

<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:sys="clr-namespace:System;assembly=mscorlib" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
mc:Ignorable="d" d:DesignWidth="640" d:DesignHeight="480">
    <Grid ShowGridLines="True">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="200" MinWidth="150"  />
            <ColumnDefinition />
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="3*" />
            <!--<RowDefinition Height="Auto" />-->
            <RowDefinition MaxHeight="25" Height="25" MinHeight="25" />
            <RowDefinition Height="1*"/>
        </Grid.RowDefinitions>
        <Grid Grid.RowSpan="4" Grid.Row="0" Grid.Column="0" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" />
        <GridSplitter Grid.Row="0" Grid.RowSpan="4" Width="4" />
        <Frame >
        </Frame>
        <GridSplitter Grid.Row="0" Height="4" Grid.Column="1" HorizontalAlignment="Stretch" VerticalAlignment="Bottom" />
        <Grid Grid.Column="2" Grid.Row="2" VerticalAlignment="Stretch" HorizontalAlignment="Stretch"/>
        <ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto" Grid.Column="2" Grid.Row="3">
            <Grid VerticalAlignment="Stretch" HorizontalAlignment="Stretch" />
        </ScrollViewer>
    </Grid>
</Page>

私がしたいのは、Horizo​​ntal Grid Splitter が上部パネルのサイズを変更し、下部の Grid (高さを 25 に維持したい) と Scrollviewer コントロールを下に移動することです。

水平グリッドスプリッターを独自の行に配置しようとしましたが、これによりコンテンツが下に移動しますが、探しているものではない上部グリッドのコンテンツが縮小されます。

私が間違っていることについて何か提案はありますか?比例高さと関係がありますか?

4

2 に答える 2

1

あなたの問題を正しく理解していれば。内側のグリッドから VerticalAlignment="Stretch" と Horizo​​ntalAlignment="Stretch" を取り出して、必要なものを取得できるはずです。

グリッドスプリッターは、両方の配置がストレッチに設定されている別の行 (または列) の他のコンテンツを好みません。

于 2010-09-07T03:48:18.943 に答える
1

最初に、複数の行と列に適用されるかのようにスプリッターを定義しましたが、実際には独自の行または列が必要であり、隣接する行/列に適用されるため、以前は正しい軌道に乗っていました。

問題、プロポーショナル (スター) 行です。スプリッターが機能するには、隣接する行/列の少なくとも 1 つを固定 (ピクセル) サイズにするか、マウスでは調整せず、奇妙な比例移動によって調整する必要があります。

「しかし、それは私が探しているものではないトップグリッドのコンテンツを縮小します」というコメントを理解できなかったので、さらに説明が必要な場合があり、いくつか推測しましたが、以下に示すXAMLファイルにはスプリッターがあります自分自身を振る舞う:

 <Grid ShowGridLines="True">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="191.5"  />
            <ColumnDefinition Width="8.5"/>
            <ColumnDefinition />
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="194" />
            <RowDefinition Height="0.148*"/>
            <RowDefinition MaxHeight="25" Height="25" MinHeight="25" />
            <RowDefinition Height="0.852*"/>
        </Grid.RowDefinitions>
        <Grid Grid.RowSpan="4" Grid.Row="0" Grid.Column="0" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Grid.ColumnSpan="2" Margin="0,0,-0.5,0" />
        <sdk:GridSplitter Grid.Row="0" Grid.RowSpan="4" Grid.Column="1" HorizontalAlignment="Stretch" Margin="0.5,0,-0.5,0" />
        <Frame >
        </Frame>
        <sdk:GridSplitter Grid.Row="1" HorizontalAlignment="Stretch" Grid.ColumnSpan="3" />
        <Grid Grid.Column="2" Grid.Row="3" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Margin="0.5,0,-1,0"/>
        <ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto" Grid.Column="2" Grid.Row="3" Margin="0.5,0,-1,0">
            <Grid VerticalAlignment="Stretch" HorizontalAlignment="Stretch" />
        </ScrollViewer>
    </Grid>
于 2010-08-23T12:14:54.923 に答える