Как: создать 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: Если вы знаете, как сохранить измененный размер, чтобы при перезапуске приложения он был того же размера, просто добавьте в свой пост.

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


person gpuk360    schedule 20.05.2014    source источник
comment
Для сохранения макета размера GridSplitters см. этот SO QA: stackoverflow.com/questions/5018544/   -  person VSS    schedule 21.05.2014
comment
Взгляните на это решение codeproject.com/Articles/34377/   -  person jv_    schedule 23.09.2017


Ответы (1)


Если вы хотите иметь возможность изменять размер столбцов/строки, вместо 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>
person dkozl    schedule 20.05.2014
comment
Спасибо за вашу помощь. Это то, что я ищу. Я отредактировал свой пост, пожалуйста, смотрите выше. У меня до сих пор с этим проблемы. - person gpuk360; 21.05.2014
comment
Проверьте мой обновленный пример. В основном вам нужно изменить размер столбцов / строк, а ваш Grid пуст, кроме GridSplitter, поэтому замените внешний DockPanel на Grid (как в моем примере) и поместите внутренний DockPanels как 2 столбца Grid. Макет должен оставаться прежним, но вы должны иметь возможность изменять размер левого и правого столбцов. - person dkozl; 21.05.2014
comment
Спасибо, дкозл. Есть небольшая проблема: GridSplitter идет с Width="5" --› к сожалению, он находится поверх левого DockPanel. Это немного убивает ширину DockPanel. - person gpuk360; 21.05.2014
comment
Так что установите Margin на DockPanel что-то вроде Margin="0,0,5,0" - person dkozl; 21.05.2014
comment
Работает отлично! Идеально! Спасибо. - person gpuk360; 21.05.2014