2014-05-20 8 views
1

Как: Создать GridSplitter, что настраивает размер DockPanel (C#, WPF)Как: Создать GridSplitter, что настраивает размер DockPanel (C#, WPF)

Это мой GridSplitter код, но, к сожалению, он не работает: мне не разрешено изменять размер моего grid. Я вижу GridSplitter, но я не могу его использовать.

<DockPanel DockPanel.Dock="Left" Name="dockPanel_1" Width="200"> 
    <StackPanel /> 
    <DockPanel /> 
</DockPanel> 
<Grid> 
    <GridSplitter ShowsPreview="True" Width="5" HorizontalAlignment="Right" VerticalAlignment="Stretch" /> 
</Grid> 
<DockPanel DockPanel.Dock="Right" Name="dockPanel_2"> 
    <StackPanel /> 
    <DockPanel /> 
</DockPanel> 

PS: Если вы знаете, как сохранить измененный размер, так что его до такого же размера, при повторном запуске приложения, просто добавьте к вашему сообщению.

Заранее спасибо.

+1

Для сохранения макета GridSplitters размера, пожалуйста увидеть эту SO QA: HTTP: // StackOverflow. com/questions/5018544/wpf-gridsplitter-saving-and-restoring-location-and-splitting-пропорционально – VS1

+0

Взгляните на это решение https://www.codeproject.com/Articles/34377/DockPanel-Splitter-Control- for-WPF –

ответ

7

Если вы хотите, чтобы иметь возможность изменять размеры столбцов/строк, то вместо DockPanel вы можете использовать Grid с GridSplitter

<Grid> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="200"/> 
     <ColumnDefinition/> 
    </Grid.ColumnDefinitions> 
    <DockPanel Name="dockPanel_1"> 
     <StackPanel /> 
     <DockPanel /> 
    </DockPanel> 
    <GridSplitter Width="5" HorizontalAlignment="Right" VerticalAlignment="Stretch" ResizeBehavior="CurrentAndNext"/> 
    <DockPanel Grid.Column="1" Name="dockPanel_2"> 
     <StackPanel /> 
     <DockPanel /> 
    </DockPanel> 
</Grid> 
+0

Спасибо за помощь. Это то, что я ищу. Я редактировал свой пост, см. Выше. У меня все еще есть проблемы с этим. – gpuk360

+0

Проверьте мой обновленный пример. В основном вам нужны столбцы/строки для изменения размера, а ваша 'Grid' пуста, aprart из' GridSplitter', поэтому ** замените ** внешний 'DockPanel' на' Grid' (как в моем примере) и поместите внутренние 'DockPanels' как 2 столбцы «Grid». Макет должен оставаться таким же, но вы должны иметь возможность изменять размер столбцов влево/вправо. – dkozl

+0

Спасибо, dkozl. Есть только небольшая проблема: 'GridSplitter' идет с' Width = "5" '-> к сожалению, он находится над левой' DockPanel'. Это «убивает» немного ширины «DockPanel». – gpuk360