2011-06-14 194 views
12

我在我的WPF窗口中有一个网格。当某个按钮被按下时,我想要一个网格单元格中的控件向下扩展,使其原始大小加倍。发生这种情况时,控件将被剪裁到包含单元格的可视范围。但是,我需要在下面的单元格顶部显示所有内容。我试图将Panel.ZIndex设置为很高的值,但无济于事。我基本上需要在CSS中模拟“overflow:visible”的功能。这在WPF/Xaml中可能吗?允许WPF网格单元格内容在网格单元格之外展开?

+0

您是否试过ClipToBounds = false? – Tormod 2011-07-02 13:27:33

回答

1

你可以用popup弹出:http://msdn.microsoft.com/en-us/library/system.windows.controls.primitives.popup.aspx,特别是如果你想让溢出忽略窗口边界(例如涉及装饰者的解决方案可能不会)。您希望将控件放入弹出框中,然后展开弹出框的高度以获得溢出效果。您可能需要在弹出框之后放置另一个面板或其他东西,以确保未展开的尺寸保持正确。

7

将单元内控件的ClipToBounds属性设置为False,然后将单元格的内容包装在Canvas中。画布是一个有保证的突破界限,并非所有的控件(例如按钮)。

实施例:

<Canvas Grid.Row="5" Grid.Column="3"> 
    <TextBlock Text="Long text here" ClipToBounds="False"> 
</Canvas> 
+0

仅对Silverlight发表评论:WPF中没有像控件类那样的“ClipToBounds”属性(https://msdn.microsoft.com/en-us/library/system.windows.uielement.cliptobounds(v=vs。 110)的.aspx)。在Silverlight中,将控件包装在Canvas中就足够了。 – Martin 2016-01-26 10:25:14

2
  • 使用ROWSPAN或columnspan限定栅地方在底部的细胞时
  • 。由于渲染引擎从上到下呈现,并且您希望此单元格位于其他单元格之上。您可能能够脱离zindex,但我尽量减少维护zindex。
+0

这将是答案,因为当网格行宽度不固定时,ClipToBounds =“True”不保留显示组件所需的空间。 – n0ne 2017-02-09 04:06:47