2011-06-14 88 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