【问题标题】:How to make expander expand over grid rows如何使扩展器在网格行上展开
【发布时间】:2013-07-11 06:10:31
【问题描述】:

我一直在寻找这个问题的答案,但我发现的所有解决方案都无法正常工作。
这是问题所在。我有界面,基于如下网格:


| __________________________________|
|(v)expander |(v)expander  |(v)expander |  <- grid inside the row of main grid
|___________________________________|
|                                        |
|                                        |
|                                        |
.                                        . <- grid, stackpanel, etc. inside row
.                                        .
.                                        .
|                                        |
|___________________________________|
|(^)expander  | (^) expander   |         | <- grid inside the row of main grid
|___________________________________|

每个扩展器都放置在自己的边框上。
现在我希望扩展器扩展接口的其余部分。顶部扩展器向下扩展,底部扩展器向上扩展。我不能使用 RowSpan。我猜应该以某种方式使用 zIndex 来完成,但我尝试了很多但没有奏效。我将所有网格和边框 Panel.ZIndex 属性设置为 99,扩展器的内容设置在 ZIndex 上约 999。

有什么办法吗?
谢谢,

【问题讨论】:

  • 扩展器应该保持打开状态,还是应该关闭,类似于 ComboBox 的下拉菜单的工作方式?
  • 好吧,两者都可以,但最好在您单击关闭之前一直保持打开状态。

标签: wpf grid overflow z-index expander


【解决方案1】:

过了一段时间(当我一直在做其他事情以刷新我对这个主题的想法时)我找到了解决方案。它基于 Karl Shifflet 解决方案 (http://karlshifflett.wordpress.com/2008/02/05/wpf-sample-series-expander-control-with-popup-content/)。
我将放置顶部扩展器的网格放置在画布上。我将 Canvas Panel.ZIndex 属性设置为大约 99,并将背景设置为所需的颜色。 Grid.Background 属性设置为透明,Width 填充画布大小:

Background="Transparent" Width="{Binding RelativeSource= {RelativeSource Mode=FindAncestor, AncestorType={x:Type Canvas}}, Path=ActualWidth}"

重要的是将所有扩展器VerticalAlignment 设置为顶部,因为当其中一个扩展器扩展时,网格高度(在这种情况下不应硬定义)也会调整大小,并且当它们的垂直对齐未设置为顶部,所有扩展器都放在中间。

我希望它对某人有所帮助。

【讨论】:

  • 看起来 Karl 可能已经删除了他的网站。链接现在失效了。 :(
  • 我找不到任何包含该解决方案的页面,但我希望我的解释足以帮助您使其正常工作
【解决方案2】:

如果您想保证弹出窗口出现在顶部,您可能希望使用弹出窗口而不是扩展器。

【讨论】:

    猜你喜欢
    • 2012-06-22
    • 1970-01-01
    • 2019-06-14
    • 2014-05-20
    • 1970-01-01
    • 2011-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多