uwp - 是否可以使用 XAML 组合扩展为元素的大小隐式设置动画?
问题描述
我正在尝试实现元素大小变化的自动动画。我认为Composition和XAML之间存在一些我不完全理解的相互作用。
首先,我尝试使用工具包中的 XAML 扩展:
<TextBox x:Name="TextBoxControl" VerticalAlignment="Center" Width="50">
<animations:Implicit.Animations>
<animations:Vector3Animation Target="Size" Duration="0:0:0.5"/>
</animations:Implicit.Animations>
</TextBox>
...并希望它在扩展以容纳更多文本时自动为 TextBox 设置动画。那里没有骰子。然后我尝试将 TextBox 包装在外部网格中,将隐式动画附加到网格中。没变。
接下来,我尝试手动为 TextBox Visual 的 Size 设置动画:
var visual = ElementCompositionPreview.GetElementVisual(TextBoxControl);
var newSize = new Vector2(visual.Size.X + 20f, visual.Size.Y);
visual.Size = newSize;
The Parameter is incorrect
奇怪的是,这在尝试设置新大小时导致异常。
最后,我尝试改变 TextBoxUIElement
的宽度而不是它的视觉宽度:
TextBoxControl.Width += 20;
...也没有动画。
最后,出于挫败感,我尝试为 SCALE 设置动画,做同样的事情:
XAML
<TextBox x:Name="TextBoxControl" VerticalAlignment="Center" Width="50">
<animations:Implicit.Animations>
<animations:Vector3Animation Target="Scale" Duration="0:0:0.5"/>
</animations:Implicit.Animations>
C#
var visual = ElementCompositionPreview.GetElementVisual(TextBoxControl);
visual.Scale = new Vector3(visual.Scale.X + 0.1f, visual.Scale.Y + 0.1f, visual.Scale.Z);
...完全按预期工作。当我运行 C# 代码时,TextBox 的比例增加了,并且是动画的。
那么有没有办法通过使用隐式动画来实现UI元素大小变化的自动动画呢?
解决方案
推荐阅读
- mysql - MySQL 1366 不正确的整数值
- go - 如何在 Go 中正确打开进程并记录标准输入和标准输出?
- python - Sqlalchemy + Postgres - 多个值更新
- spring-boot - 如何每分钟从队列接收消息一次春季启动?
- android - 读取 USB OTG 文件返回 null
- sql - 在 postgres 中获取 JSON 字段的键
- wget - Gerrit 代码审查 - 如何使用 wget 使用 http 密码下载文件?
- matlab - 3D 曲面图 MATLAB
- r - 将 2 列中的所有唯一值收集到一个新列中
- c# - NHapi:为 QBP^Q21 消息创建 MSH 段时出现 System.TypeInitializationException