【发布时间】:2017-07-20 10:30:20
【问题描述】:
在我的控件中,我有一个 ContentPresenter,它的 Child 是 StackPanel。在这个 StackPanel 里面有一些元素。该数字未定义,因为控件的用户定义了它。
有没有办法绑定到 StackPanel 内元素的高度?在 Visual Studio 的 Live Tree 中,有一个属性 RenderSize 可以为我提供所需的高度,但绑定到此属性没有任何作用。
我不知道代码是否对您有帮助,但这是我的 ContentPresenter。 InnerContent 是一个自定义属性,它将 UIElement 作为 Setter(StackPanel)。
<ContentPresenter
x:Name="MyContentPresenter"
Content="{TemplateBinding InnerContent}" />
我绑定到InnerContent.RenderSize.Height,但这没有任何作用。
编辑: 我无法绑定到 ActualHeight 属性,因为 ContentPresenters Height 是动画的。它是某种下拉菜单。高度在 0 和 StackPanel 的高度之间切换。而此时 StackPanel 的 ActualHeight 为 0,但 RenderSize 是期望的高度。
我在这里遗漏了什么吗?因为这看起来不是什么大问题。
【问题讨论】:
-
试试
InnerContent.ActualHeight -
问题是您将 StackPanel 托管在一个高度在其他地方设置的盒子中。尝试阅读内容高度就像狗抓住自己的尾巴一样。尝试将 StackPanel 托管在 Canvas 或 ScrollViewer 中,因为它们不限制子级的大小。在扩展外部控件的那一刻,您可以测量SP的ActualHeight,然后开始动画。