4

私はWPFが初めてです。ここからサイズ変更可能な垂直エキスパンダーを実行する方法を見つけることができました:エキスパンダーとグリッドを組み合わせる (サイズ変更可能なエキスパンダー)

水平を作るのは簡単だと思ったので、さまざまな方法を試しましたが成功しませんでした。

複雑なコードなしで実行できますか? 2 つのグリッド行の間にグリッドスプリッターを配置するには、そのうちの 1 つにエキスパンダーがあります


レイアウトは次のようになります。

左のエキスパンダー/グリッドスプリッターは正常に動作します。ただし、下部のエキスパンダー/グリッドスプリッターはそうではありません。ただし、グリッドスプリッターがなくても問題なく動作します。

ここに画像の説明を入力

私のXAML:

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*"/>
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition Height="*" />
        <RowDefinition Height="10" />
        <RowDefinition Height="Auto"  />
    </Grid.RowDefinitions>

    <DockPanel Grid.Row="0">
        <Expander ExpandDirection="Left" Header="">
            <Expander.Content>
                <Grid>
                    <!-- this works -->
                </Grid>
            </Expander.Content>
        </Expander>
        <TextBox AcceptsReturn="True" />
    </DockPanel>

    <GridSplitter Grid.Row="1" Height="10" HorizontalAlignment="Stretch" ResizeBehavior="PreviousAndCurrent" ResizeDirection="Rows"/>

    <DockPanel Grid.Row="2">
        <Expander ExpandDirection="Down" Header="Summary">
            <Expander.Content>
                <TextBox AcceptsReturn="True" />
            </Expander.Content>
        </Expander>
    </DockPanel>
</Grid>

中央の行とグリッドスプリッターを削除すると、正常に機能しますが、サイズ変更できません。

どんな助けでも大歓迎です。

4

2 に答える 2

3

3 列目の高さも比例する必要があります。MinHeight1段目と1段目は完全に縮まないように指定してください。

編集された XAML:

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*"/>
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition Height="6*" MinHeight="100"/>
        <RowDefinition Height="10" />
        <RowDefinition Height="*"  MinHeight="50"/>
    </Grid.RowDefinitions>

    <DockPanel Grid.Row="0">
        <Expander ExpandDirection="Left" Header="">
            <Expander.Content>
                <Grid>
                    <!-- this works -->
                </Grid>
            </Expander.Content>
        </Expander>
        <TextBox AcceptsReturn="True" />
    </DockPanel>

    <GridSplitter Grid.Row="1" Height="2" HorizontalAlignment="Stretch"/>

    <DockPanel Grid.Row="2">
        <Expander ExpandDirection="Down" Header="Summary">
            <Expander.Content>
                <TextBox AcceptsReturn="True" />
            </Expander.Content>
        </Expander>
    </DockPanel>
</Grid>
于 2013-07-14T06:41:58.913 に答える