如何使扩展器扩展到网格行

时间:2011-04-29 12:59:35

标签: wpf grid overflow z-index expander

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


| __________________________________|
|(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左右。

有什么办法吗?
谢谢,

2 个答案:

答案 0 :(得分:3)

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

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

重要的是将所有扩展器VerticalAlignment设置为Top,因为当其中一个展开时,Grid Height(在这种情况下不应该硬定义)也会调整大小,并且当它们的Vertical Alignment不是设置为Top,所有扩展器都放在中间。

我希望它有所帮助。

答案 1 :(得分:2)

如果您想保证它会显示在顶部,您可能需要使用弹出窗口而不是扩展器。