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 пикселей?
Спасибо за любую помощь
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