gpt4 book ai didi

.net - 在没有所有 child 的情况下调整 WPF UserControl 的大小 "jumping around"

转载 作者:行者123 更新时间:2023-12-03 20:26:41 24 4
gpt4 key购买 nike

有没有办法调整 WPF UserControl 的大小,使子控件不会四处乱飞?

我有这个 Storyboard:

<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="Height" Storyboard.TargetName="MyUserControl" To="145" From="0" Duration="0:0:1" />
</Storyboard>

这很好用;它需要我的控制从 0 高度到 145 高度 - 问题是随着 Height 属性的变化,我怀疑,由于它们的 Horizo​​ntalAlignment 和 VerticalAlighment 属性,里面的所有子控件都开始跳跃。有没有办法在动画完成之前禁用它?

我正在尝试创建这个 UserControl“滑动”到 View 中的错觉——所以如果我犯了这个错误,我愿意接受其他方法。

最佳答案

一切都在“跳来跳去”,因为每次Height控件的所有控件都根据新的可用空间重新定位。

要达到预期的效果,您应该使用 RenderTransform而不是更改实际 Height的控制。

这是您如何做到这一点。首先添加ScaleTransform作为 RenderTransform 的值您的控件上的属性:

<MyUserControl.RenderTransform>
<ScaleTransform ScaleY="0" />
</MyUserControl.RenderTransform>

然后,修改动画的目标属性以更改 ScaleY变换的属性:
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="RenderTransform.(ScaleTransform.ScaleY)" Storyboard.TargetName="MyUserControl" To="145" Duration="0:0:1" />
</Storyboard>

更新:

另一种实现滑入 View 效果的方法是使用 TranslateTransform带负 Y值(value):
<MyUserControl.RenderTransform>
<TranslateTransform Y="-1000" />
</MyUserControl.RenderTransform>

然后,动画它的 Y属性为 0:
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="RenderTransform.(TranslateTransform.Y)" Storyboard.TargetName="MyUserControl" To="0" Duration="0:0:1" />
</Storyboard>

关于.net - 在没有所有 child 的情况下调整 WPF UserControl 的大小 "jumping around",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5096467/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com