簡體   English   中英

如何根據內容動態調整WrapPanel的高度?

[英]How to adjust WrapPanel height dynamically based on content?

我正在開發WPF應用程序。 在此應用程序中,我有一個包含WrapPanel的窗口。 WrapPanel內部是一系列StackPanel,它們具有不同的高度,但寬度相同。 在設計時不知道StackPanel的數量和大小(它們是動態生成的)。

這些StackPanel通常可以相互堆疊,然后在WrapPanel中沒有更多空間時“包裝”到另一列。 為此,我必須為WrapPanel設置一個固定的高度(將高度設置為“自動”,它將繼續沿頁面向下而不是換行到另一列)。 但是,當我偶然遇到一個StackPanel太大而無法容納WrapPanel高度時,它就會被截斷。 下面是這種情況的圖像。

在此處輸入圖片說明

我的問題是,我可以在向用戶Show()之前查詢每個StackPanel的高度,並根據最大的StackPanel設置WrapPanel的高度嗎? 有一個更好的方法嗎?

首先,您是否確定此問題不是由WrapPanel達到其最大可用尺寸(即,其大小受其父Window或元素約束)引起的? 因為是這種情況,所以您需要查看重組整體布局,或者將其包裝在ScrollViewer中。

如果不是上述情況,並且WrapPanel有足夠的“增長”空間,則確實確實是一個奇怪的問題。 您說StackPanels是動態生成的。 因此,在您的代碼中,您必須調用myWrapPanel.Children.Add(stackPanel) 在這行代碼之后,您可以嘗試添加如下內容:

myWrapPanel.Height = myWrapPanel.Children.Cast<FrameworkElement>().Max(e => e.ActualHeight);

編輯:僅意識到這僅在單個StackPanel占據整個高度時才有效,如您的圖像中所示。 但也許它將使您步入正軌!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM