13

サイズ変更可能な列と 80 の MinWidth を持つ単純な 3 列のグリッドが必要です。

コードは次のようになります。

<Grid>
  <Grid.ColumnDefinitions>
    <ColumnDefinition Width="120" MinWidth="80"/>
    <ColumnDefinition Width="Auto"/>
    <ColumnDefinition Width="*" MinWidth="80"/>
    <ColumnDefinition Width="Auto"/>
    <ColumnDefinition Width="120" MinWidth="80"/>
  </Grid.ColumnDefinitions>
  <GridSplitter Grid.Column="1" Width="5" HorizontalAlignment="Center" />
  <GridSplitter Grid.Column="3" Width="5" HorizontalAlignment="Center" />
</Grid>

しかし、それは私が望んでいて期待したようには機能しません。スプリッターを左に押すと、すべて正常に動作します。2 番目のスプリッターを右に押すと、すべて正常に動作します。ただし、最初のスプリッターが右に押されると、3 番目の列と 2 番目のスプリッターがグリッドの外に押し出されます (または幅 = 0 になります)。

msdn の例で行ったように、グリッドスプリッターに個別の列を使用しました。

<Grid.ColumnDefinitions>
  <ColumnDefinition/>
  <ColumnDefinition Width="Auto" />
  <ColumnDefinition/>
</Grid.ColumnDefinitions>
...
<GridSplitter Grid.Column="1"
      HorizontalAlignment="Center"
      VerticalAlignment="Stretch"
      Background="Black" 
      ShowsPreview="True"
      Width="5"
      />

また、正しい配置が問題になる可能性がある場所を読んで、さまざまな ResizeBehaviors を試したので、配置を中央に設定しました。

この問題を修正する方法を知っている人はいますか?

助けてくれてありがとう

4

2 に答える 2

20

minwidth が 80 に設定されている 3 つの列に対しては、代わりにこれを試してください。グリッドスプリッターを使用する場合は、正確な幅を指定する代わりに * を使用してください。

<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Hidden">
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*" MinWidth="80" />
            <ColumnDefinition Width="5"/>
            <ColumnDefinition Width="*" MinWidth="80"/>
            <ColumnDefinition Width="5"/>
            <ColumnDefinition Width="*" MinWidth="80"/>
        </Grid.ColumnDefinitions>
        <TextBlock Grid.Column="0" Text="{Binding Path=ActualWidth, RelativeSource={RelativeSource Self}}" />
        <GridSplitter Grid.Column="1"  VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Background="Red" />
        <TextBlock Grid.Column="2" Text="{Binding Path=ActualWidth, RelativeSource={RelativeSource Self}}" />
        <GridSplitter Grid.Column="3"   VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Background="Red" />
        <TextBlock Grid.Column="4" Text="{Binding Path=ActualWidth, RelativeSource={RelativeSource Self}}" />
    </Grid>
</ScrollViewer>
于 2010-08-31T14:45:00.033 に答える
0

これをコメントとして投稿できません。これを回答リストに入れます。メインのwithの右側にコンテンツとしてwith
を配置すると、一番右のペインをウィンドウの境界から押し出すことができます。何か案が?GridGridSplitterGridGridSplitter

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*" MinWidth="80" />
        <ColumnDefinition Width="5"/>
        <ColumnDefinition Width="*" MinWidth="80"/>
    </Grid.ColumnDefinitions>
    <TextBlock Grid.Column="0" Text="{Binding Path=ActualWidth, RelativeSource={RelativeSource Self}}" />
    <GridSplitter Grid.Column="1"  VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Background="Red" />
    <Grid Grid.Column="2">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*" MinWidth="80" />
            <ColumnDefinition Width="5"/>
            <ColumnDefinition Width="*" MinWidth="80"/>
        </Grid.ColumnDefinitions>
        <TextBlock Grid.Column="0" Text="{Binding Path=ActualWidth, RelativeSource={RelativeSource Self}}" />
        <GridSplitter Grid.Column="1"  VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Background="Red" />
        <TextBlock Grid.Column="2" Text="{Binding Path=ActualWidth, RelativeSource={RelativeSource Self}}" />
    </Grid>
</Grid>
于 2020-11-18T02:40:50.167 に答える