如何创建一个GridSplitter,自定义DockPanel的大小(C#,WPF)

4

如何创建一个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的大小和布局,请参考这个Stack Overflow问答:https://dev59.com/_G445IYBdhLWcg3wIG19 - S2S2
看一下这个解决方案 https://www.codeproject.com/Articles/34377/DockPanel-Splitter-Control-for-WPF - jv_
1个回答

13

如果您想要调整列/行的大小,那么可以使用带有GridSplitterGrid而不是DockPanel.

<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>

谢谢你的帮助。这正是我在寻找的。我已经编辑了我的帖子,请看上面。我仍然有问题。 - sjantke
请检查我的更新示例。基本上,您需要调整列/行的大小,而您的Grid为空,除了GridSplitter之外,因此请使用Grid(就像在我的示例中一样)替换外部的DockPanel,并将内部的DockPanels放置为Grid的2列。布局应保持不变,但您应该能够调整左/右列的大小。 - dkozl
谢谢,dkozl。只有一个小问题:GridSplitterWidth="5" 与左侧的 DockPanel 重叠了。这会占用一部分 DockPanel 的宽度。 - sjantke
所以在 DockPanel 上设置 Margin 为类似 Margin="0,0,5,0" 的值。 - dkozl
运行良好!完美!谢谢。 - sjantke

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接