Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > WPF и Silverlight > GridSplitter и размеры колонок грида


Автор: Competitor 21.7.2015, 07:36
Всем привет,
Набрасал вот такой пример с GridSplitter:
Код

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width=".66*" MinWidth="250" />
        <ColumnDefinition Width="Auto" />
        <ColumnDefinition Width="*" MinWidth="400"/>
    </Grid.ColumnDefinitions>
    <TextBlock Text="Unlike the three layout controls that we've looked at earlier in this tutorial, the GridSplitter cannot be used in isolation. It is a layout control that must be placed within the cells of a Grid."
               TextTrimming="CharacterEllipsis"
               Grid.Column="0" Margin="20" />
    <GridSplitter Grid.Column="1" ResizeDirection="Columns" Width="5" Height="Auto"
                  HorizontalAlignment="Stretch"
                  VerticalAlignment="Stretch" Background="Tomato"/>
    <Button Content="Super button 3" Grid.Column="2" Margin="20" Width="360" />
</Grid>

Попробуйте вставить в XamlPad. XamlPad при этом развернут не на весь экран, а, например, на пол экрана. Сдвиньте грид сплиттер максимально вправо, затем начните тянуть правую границу окна XamlPad влево. Мы видим, что гридсплиттер начинает планомерно уменьшать размеры 1-ой и 3-ей колонок, не обращая внимания на свойство MinWidth="400" 3-ей колонки. Т.е. размер первой колонки может быть, например, 700, и я ожидаю, что, достигнув лимита 3-ей колонки, сжиматься будет только первая, пока тоже не дойдет до своего лимита.

Так происходит из-за длинного текста в первой колонке. Wpf считает, что сжимать 1-ую колонку уже тоже нельзя, так как будет порезан текст, и, не смотря на MinWidth 3-ей колонки, начинает сжимать обе.

Как сделать так, чтобы в данном случае, если достигнут MinWidth 3-ей колонки, начинала сжиматься только 1-ая колонка (разумеется, пока не будет достигнут ее MinWidth)?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)