WPF中如何取消DockPanel内控件停靠使其填充剩余空间
解决方法
无需从DockPanel中移除控件,直接调用DockPanel.SetDock时传入Dock.Fill枚举值,即可让目标控件填充面板内的剩余可用空间:
// 取消原有侧边停靠设置,切换为填充模式 DockPanel.SetDock(group, Dock.Fill);
你之前觉得SetDock无法实现需求,是因为仅关注到了四个方位的Dock枚举值,Dock枚举本身内置了Fill成员,专门对应填充剩余空间的停靠逻辑,完全满足你仅通过方法调用调整布局的要求。
手风琴菜单布局注意事项
针对你要实现的手风琴样式菜单,记住DockPanel的两个布局规则就能避免显示异常:
- 停靠空间分配优先级和子控件的添加顺序强相关:越早加入DockPanel的子控件,越先抢占停靠区域。设置为
Dock.Fill的展开菜单项建议放在子控件集合的最后,否则会被其他停靠的折叠项挤压,无法占满预期空间。 - 菜单切换逻辑非常简单:选中某一项时,将当前展开项的Dock值设为
Dock.Fill,其余折叠项按需设置为Dock.Top或Dock.Bottom即可,不需要动态增删控件,就能实现折叠项显示在选中项上下方的效果。
内容的提问来源于stack exchange,提问作者Patrick
相关产品推荐
相关产品推荐

