【问题标题】:WPF / Xaml - Get the Height of a dynamic ElementWPF / Xaml - 获取动态元素的高度
【发布时间】: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,然后开始动画。

标签: c# wpf xaml


【解决方案1】:

好的,伙计们。这是我的错。 ActualHeight 属性工作正常,即使 ContentPresenters 高度属性为 0,StackPanel 的 ActualHeight 设置正确。

谢谢!

【讨论】:

    【解决方案2】:

    也许你需要绑定到 StackPanel 的ActualHeight

    【讨论】:

    • 请看 EDIT。
    【解决方案3】:

    尝试改用FrameworkElement.ActualWidthActualHeight 属性。

    【讨论】:

    • 请看 EDIT。
    猜你喜欢
    • 2021-12-12
    • 2020-09-09
    • 2015-02-13
    • 2011-08-05
    • 1970-01-01
    • 2016-04-27
    • 2010-11-20
    • 2012-06-14
    • 1970-01-01
    相关资源
    最近更新 更多