GridSplitter изменяет размеры неправильно

На Page производный класс, у меня есть несколько вложенных гридов.

Я изменил ColumnDefinition шириной в несколько пикселей (т.е. около 5), причем некоторые столбцы имеют ширину "*".

Все элементы имеют Width="Auto",

Вот мой сплиттер:

<Grid Margin="10"
          HorizontalAlignment="Stretch"
          VerticalAlignment="Stretch"
          Grid.Background="SpringGreen">

        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="5" />
            <ColumnDefinition Width="5*" />
            <ColumnDefinition Width="5" />
            <ColumnDefinition Width="5" />
            <ColumnDefinition Width="5" />
            <ColumnDefinition Width="5*" />
            <ColumnDefinition Width="5" />

        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="5*" />

        </Grid.RowDefinitions>

        <GridSplitter Grid.Row="1"
                      Grid.Column="3"
                      Width="Auto"
                      Height="Auto"
                      Margin="0"
                      HorizontalAlignment="Stretch"
                      VerticalAlignment="Stretch"
                      Background="Red"
                      BorderThickness="1,0"
                      Cursor="SizeWE"
                      RenderTransformOrigin="-1,1"
                      ShowsPreview="True" />
    </Grid>

Так что проблема в том, что он практически не изменяет размеры слева, но очень сильно вправо. Это не зависит от размера окна, даже в полноэкранном режиме, разделитель позволяет только несколько пикселей влево.

-edit- Есть ли известные проблемы, которые я сам не нашел (в гугле)? Кто-нибудь испытывал подобное странное поведение?

-edit update- Нашел минимальное определение для сетки, чтобы воспроизвести проблему.

1 ответ

Решение

У вас есть 3 столбца шириной 5 между двумя столбцами *-width. GridSplitter находится в середине этого. Он работает путем изменения размера предыдущего столбца (то есть первого из ваших 5-пиксельных столбцов). Вы не можете изменить размер влево, потому что этот столбец имеет ширину всего 5 пикселей.

Помни что Row а также Column свойства начинаются с нуля.

Другие вопросы по тегам