我在我的WPF窗口中有一个网格。当某个按钮被按下时,我想要一个网格单元格中的控件向下扩展,使其原始大小加倍。发生这种情况时,控件将被剪裁到包含单元格的可视范围。但是,我需要在下面的单元格顶部显示所有内容。我试图将Panel.ZIndex设置为很高的值,但无济于事。我基本上需要在CSS中模拟“overflow:visible”的功能。这在WPF/Xaml中可能吗?允许WPF网格单元格内容在网格单元格之外展开?
回答
你可以用popup弹出:http://msdn.microsoft.com/en-us/library/system.windows.controls.primitives.popup.aspx,特别是如果你想让溢出忽略窗口边界(例如涉及装饰者的解决方案可能不会)。您希望将控件放入弹出框中,然后展开弹出框的高度以获得溢出效果。您可能需要在弹出框之后放置另一个面板或其他东西,以确保未展开的尺寸保持正确。
将单元内控件的ClipToBounds属性设置为False
,然后将单元格的内容包装在Canvas中。画布是一个有保证的突破界限,并非所有的控件(例如按钮)。
实施例:
<Canvas Grid.Row="5" Grid.Column="3">
<TextBlock Text="Long text here" ClipToBounds="False">
</Canvas>
仅对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
- 使用ROWSPAN或columnspan限定栅地方在底部的细胞时
- 。由于渲染引擎从上到下呈现,并且您希望此单元格位于其他单元格之上。您可能能够脱离zindex,但我尽量减少维护zindex。
这将是答案,因为当网格行宽度不固定时,ClipToBounds =“True”不保留显示组件所需的空间。 – n0ne 2017-02-09 04:06:47
您是否试过ClipToBounds = false? – Tormod 2011-07-02 13:27:33