Wpf 如何获取stackpanel的实际当前高度?

Wpf 如何获取stackpanel的实际当前高度?,wpf,xaml,panel,stackpanel,Wpf,Xaml,Panel,Stackpanel,你好 我想在WPF中制作一个定制的stackpanel,它会根据面板的高度自动调整孩子的大小。但是面板的高度是动态的,因为它延伸到其父对象。当我想要获得高度时(我尝试了所有的可能性,请参见代码),它总是0或未定义,尽管在构建解决方案中它肯定不是0。 代码如下: XAML: 代码隐藏: public class AutoSizeButtonStackPanel : StackPanel { public void AddChild(Button newButton) {

你好

我想在WPF中制作一个定制的stackpanel,它会根据面板的高度自动调整孩子的大小。但是面板的高度是动态的,因为它延伸到其父对象。当我想要获得高度时(我尝试了所有的可能性,请参见代码),它总是0或未定义,尽管在构建解决方案中它肯定不是0。 代码如下:

XAML:

代码隐藏:

public class AutoSizeButtonStackPanel : StackPanel
{
    public void AddChild(Button newButton)
    {
        double getPanelHeight;
        getPanelHeight = this.ActualHeight; //is 0
        getPanelHeight = this.ViewportHeight; //is 0
        getPanelHeight = this.Height; //is n. def.
        getPanelHeight = this.DesiredSize.Height; //is 0
        getPanelHeight = this.RenderSize.Height; //is 0

        newButton.Height = getPanelHeight / 2;

        this.Children.Add(newButton);
    }
}

“实际高度”是正确的属性,但在您读取它的位置,高度尚未计算


按照此链接查找构建自定义布局面板的推荐方法:

这可能与实际查询此参数时的有关。在调用
AddChild()
时,高度实际上可能仍然为0,因为可能尚未通过。所有影响您孩子的尺寸和布局的事情都应该在和中完成


您应该了解如何编写自定义面板。关于这个话题有很多资源。我个人认为这是一个很好且足够简单的教程。

谢谢,好的教程(对我来说甚至足够简单:-p)必须将调整大小逻辑放在ArrangeOverride中,现在它可以工作了。我已经知道这个教程,但它不够深刻,也不能解决我的问题。