![](/img/trans.png)
[英]How to adjust TableLayoutPanel to wrap content by height and weight? (dynamically)
[英]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.