繁体   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