我一直在寻找答案,但我找到的所有解决方案都没有正常工作 这是问题所在。我有基于网格的界面,如下所示:
| __________________________________|
|(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左右。
有什么办法吗?
谢谢,
乔
答案 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)
如果您想保证它会显示在顶部,您可能需要使用弹出窗口而不是扩展器。