【发布时间】:2014-09-16 15:54:53
【问题描述】:
<DockPanel>
<TreeView DockPanel.Dock="Bottom" />
<DataGrid DockPanel.Dock="Bottom" Visibility="Collapsed"/>
</DockPanel>
基本上,我希望第一个 TreeView 在他“折叠”时填充第二个 DataGrid 占用的剩余空间。
如果我将第一个 TreeView 设置为“Collapsed”,我希望第二个 TreeView 在设置为可见时增加高度。
由于 LastChildFill,这不起作用。但即使我将其设置为 false,当一个元素折叠时,我也无法让元素正确适应。我不能在这里使用堆栈面板,因为堆栈面板会完全忽略控件内的可用空间,因此它永远不会填满我的窗口!
【问题讨论】:
-
删除所有这些 ScrollViewer。
DataGrid和TreeView在它们的默认ControlTemplate中都有一个 ScrollViewer。你会像这样严重破坏你的用户界面。除此之外,看看WPF Layout Tutorial。 -
谢谢!关于 ScrollViewers 非常正确。但是,该页面并没有解决与我有关拥有 2 个控件的问题相关的任何问题,隐藏一个并让另一个可见,同时填充空间以调整大小。堆栈面板在这里不起作用,因为我需要填充整个内容。
-
我的 WPF 有点生锈了,但你不能使用两行高度都设置为
*的Grid。当一个折叠时另一个会填充,当两个都没有折叠时,它们会平均分享? -
尝试
UniformGrid与单列,树视图和数据网格是它的孩子 - 但您需要检查树视图和数据网格的 50%/50% 高度是否符合根据您的愿望/要求。但是,如果您的意图是最终允许用户使用拆分器调整这两个控件的排列,您应该使用 Grid(但是您需要实现一些逻辑来重新排列布局和网格的拆分器控件,以防万一孩子们倒下了)
标签: c# wpf xaml visibility dockpanel