2013-02-21 3 views
0

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

Я изменил ColumnDefinition на ширину некоторых пикселей (то есть около 5), с некоторыми столбцами, имеющими ширину «*».

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

Вот мой Splitter:

<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- Существуют ли какие-либо известные проблемы, которые я не нашел себя (на Google)? Кто-нибудь испытал подобное странное поведение?

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

+0

Можете ли вы показать XAML для сетки, пожалуйста? –

+0

Добавлены части XAML для сетей –

ответ

2

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

Помните, что Column и свойства нуля.

+0

Прежде всего: вы правы. Я могу воспроизвести поведение с обновленным кодом в вопросе. Но: как я могу изменить его для изменения размера даже столбцов «*»? Почему он работает, если я изменяю размер до правильной руки? Почему я не могу иметь столбец между моим разделителем и колонкой «*»? –

+0

Эти столбцы '' '' должны быть *, не могут редактировать его в ... –

+0

Он работает, если вы изменяете размер вправо, поскольку он изменяет размер столбца lefthand 5px и расширяет его до любого размера, который вам нравится. Попробуйте заполнить эту колонку красным цветом и посмотреть, что произойдет. Почему у вас нет столбца между разделителем и изменяемым по размеру столбцом? Поскольку это не так, как работает «GridSplitter», он находится между двумя столбцами, размер которых изменяется. Мне кажется, что вы используете эти другие столбцы 5px для обеспечения отступов, полей или границ: если это так, используйте правильные поля, и вам не нужны эти тонкие столбцы. –