【问题标题】:Hide Elements in DockPanel & Resize [duplicate]在 DockPanel 中隐藏元素并调整大小 [重复]
【发布时间】: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。 DataGridTreeView 在它们的默认 ControlTemplate 中都有一个 ScrollViewer。你会像这样严重破坏你的用户界面。除此之外,看看WPF Layout Tutorial
  • 谢谢!关于 ScrollViewers 非常正确。但是,该页面并没有解决与我有关拥有 2 个控件的问题相关的任何问题,隐藏一个并让另一个可见,同时填充空间以调整大小。堆栈面板在这里不起作用,因为我需要填充整个内容。
  • 我的 WPF 有点生锈了,但你不能使用两行高度都设置为 *Grid。当一个折叠时另一个会填充,当两个都没有折叠时,它们会平均分享?
  • 尝试UniformGrid 与单列,树视图和数据网格是它的孩子 - 但您需要检查树视图和数据网格的 50%/50% 高度是否符合根据您的愿望/要求。但是,如果您的意图是最终允许用户使用拆分器调整这两个控件的排列,您应该使用 Grid(但是您需要实现一些逻辑来重新排列布局和网格的拆分器控件,以防万一孩子们倒下了)

标签: c# wpf xaml visibility dockpanel


【解决方案1】:

我用过

<DockPanel>
      <Grid>
          <TreeView DockPanel.Dock="Bottom" />
          <DataGrid DockPanel.Dock="Bottom" Visibility="Collapsed"/>
      </Grid>
</DockPanel>

当我想要交换时,我会切换 DataGrid 和 TreeView 的可见性。我没有想到网格,因为我不认为网格会变成窗口的形状。如果您在没有 DockPanel 的情况下单独执行此操作,您将获得一个数据网格,该数据网格会在屏幕外无限显示。但是 DockPanel 将“LastFillChild”应用于 Grid,并且本质上是子级。

【讨论】:

    猜你喜欢
    • 2020-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-08
    • 2021-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多