2

1つのGridSplitterのみを含む4つの列を持つWPFグリッドがあります。2つの列(0と3)はスケーラブルですが、1つのスケーラブルな列はGridSplitter(列2)に直接隣接していません。

列0と3は、同じ初期サイズである必要があります。したがって、ネストされたグリッドに列0と1を配置することはできません。

どうすればこれを解決できますか?

<Grid Height="40">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*" />
        <ColumnDefinition Width="Auto" />
        <ColumnDefinition Width="Auto" />
        <ColumnDefinition Width="*" />
    </Grid.ColumnDefinitions>
    <Rectangle Grid.Column="0" Fill="Blue" Margin="8" />
    <Rectangle Grid.Column="1" Fill="Yellow" Margin="8" Width="24" />
    <GridSplitter Grid.Column="2" Width="8" VerticalAlignment="Stretch" />
    <Rectangle Grid.Column="3" Fill="Red" Margin="8" />
</Grid>

編集:nickolay.laptevの助けを借りてそれを解決しました

<Grid Height="40">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*" />
        <ColumnDefinition Width="Auto" />
        <ColumnDefinition Width="*" />
    </Grid.ColumnDefinitions>
    <Rectangle Grid.Column="0" Fill="Blue" Margin="8" />
    <Rectangle Grid.Column="1" Fill="Yellow" Margin="8 8 16 8" Width="24" />
    <GridSplitter Grid.Column="1" Width="8" VerticalAlignment="Stretch" HorizontalAlignment="Right" ResizeBehavior="PreviousAndNext" />
    <Rectangle Grid.Column="2" Fill="Red" Margin="8" />
</Grid>
4

2 に答える 2

2

私は2つのオプションを提供します:

  1. GridSplitterに単一の列を使用しないでください。代わりに、サイズ変更可能な列(この場合は2番目の列)の間にある列に追加します。水平方向の配置を使用して、柱の内側のどこにでもスプリッターを配置できます。
  2. 列のサイズ変更を手動で処理します。プレビューが有効になっている場合は、GridSplitter.DragCompletedイベントを使用します。その中で必要な列の幅を変更します。プレビューが無効になっている場合は、プレビュープレフィックスが付いた別のイベントを使用します。

それは私の問題を修正しました。

于 2012-09-04T14:12:41.327 に答える
0

このようなもの

        <ColumnDefinition Width="{Binding ElementName=sizedColumn.ActualWidth}" />
        <ColumnDefinition Width="Auto" />
        <ColumnDefinition Width="Auto" />
        <ColumnDefinition Width="*" x:Name="sizedColumn"/>  

ただし、マルチコンバーターを追加し、ウィンドウサイズと列1サイズも渡す必要があります。

于 2012-04-04T13:24:07.993 に答える