【问题标题】:How can I predict the height of a WPF control when child controls are changed更改子控件时如何预测 WPF 控件的高度
【发布时间】:2012-12-09 01:35:52
【问题描述】:

我正在用户控件上编写 WPF 动画。控件的高度没有明确设置;它取决于哪些子控件可见。当某些子控件被隐藏时,我正在执行动画以平滑地降低用户控件的高度。

但是,我不知道动画的结束高度。我需要测量高度是多少,是否隐藏了子控件,但在执行动画之前我无法更改控件的外观。理想情况下,我想要一个可以像这样使用的“FreezeDisplay”方法:

public void HideSomeControls()
{        
    double targetHeight;
    using (this.FreezeDisplay())
    {
        Control1.Visibility = Visibility.Hidden;
        Control2.Visibility = Visibility.Hidden;
        Control3.Visibility = Visibility.Visible;

        targetHeight = this.ActualHeight;
    }

    this.BeginAnimation(HeightProperty, new DoubleAnimation(ActualHeight, targetHeight, ...));
}

但这种方法似乎不存在。我怎样才能完成我想做的事情?

【问题讨论】:

    标签: wpf animation


    【解决方案1】:

    你的问题在细节上有点轻。例如。动画孩子应该如何对动画做出反应?剪裁?缩放?你打算如何还原动画?另一个动画?

    假设子控件被包装在一个容器中,并且您想要一个剪辑效果,我将动画如下:

    1. 立即将容器的Height 设置为ActualHeight
    2. 随着时间的推移将容器的Height 设置为零t
    3. 立即将容器的 Visibility 动画化为 Collapsed

    【讨论】:

      猜你喜欢
      • 2023-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-30
      • 1970-01-01
      • 1970-01-01
      • 2016-09-29
      • 2011-09-08
      相关资源
      最近更新 更多