如何计算扩展器的边界框?

时间:2010-07-05 12:16:56

标签: wpf expander visualtreehelper

我有一个Expander控件,我需要计算它的边界而没有不可见的元素和边距。它通常可以由VisualTreeHelper.GetDescendantsBounds完成。但似乎通过VisualTreeHelper计算的rect不依赖于扩展器状态。例如:

http://i.piccy.info/i5/58/39/273958/collapsed.jpg

(我无法发布图片。抱歉)

与展开状态(图像上的浅绿色矩形)相同的结果。有人知道如何解决这个问题吗?

2 个答案:

答案 0 :(得分:0)

Expander控件将其内容的可见性设置为Collapsed,这意味着在布局期间不会考虑它,并且不会包含在GetDescendantBounds中。但是,扩展器可以被布局引擎强制放大,而扩展器自身的大小包含在GetDescendantBounds中。

尝试在扩展器上设置VerticalAlignment="Top"。默认值为Stretch,如果父级有更多可用空间,则允许它增加大小。另外,请确保您没有明确设置Height属性。

答案 1 :(得分:0)

这是sample application。此样式应用于TreeView控件及其项目。但问题不在于风格。