Gridsplitter игнорирует minwidth столбцов



Я хочу иметь простую сетку из 3 столбцов с изменяемыми размерами столбцов и минимальной шириной 80.



Код выглядит так:



<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>


Но это не работает так, как я хочу и ожидаю. Когда сплиттеры сдвинуты влево, все работает нормально. Когда второй сплиттер толкается вправо, все работает нормально. Но если первый разделитель сдвинут вправо, он выталкивает 3-й столбец и второй разделитель из сетки(или делает их ширину=0).

Я использовал отдельные столбцы для gridsplitters, как это было сделано в Примере msdn:



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


Я также установил выравнивание по центру, так как где-то я читал, что правое выравнивание может быть проблемой.
и пробовал разные варианты поведения.



Кто-нибудь знает, как исправить эту проблему, чтобы в любое время 3 столбца были видны с шириной не менее 80 пикселей?



Спасибо за любую помощь

598   1  

1 ответ:

Попробуйте сделать это для трех столбцов, для которых значение minwidth равно 80. Используйте * вместо указания точной ширины при использовании gridsplitters.

<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>

Comments

    Ничего не найдено.