动画受面板限制

2024-04-16

有点难以描述,但我会尽力。
我有一个带有图像和标签的控件,它需要有 2 个状态(“大”和“小”)。

在“大”状态下,图像应位于控件顶部中心,标签应位于下方中心(就像带有图像和标签停靠在顶部的停靠栏一样)。

在“小”状态下,图像应该较小并且位于控件的左上角,并且标签应该位于其旁边。

大状态应该是这样的:

还有小州:

棘手的部分是:当我在它们之间切换时,我需要它的动画时间超过 0.3 秒。
我发现没有适合于此的面板。

停靠面板对于这两种状态来说都是一个很好的解决方案,但它无法为其设置动画。
Canvas可以为其设置动画,但没有正确的布局(无法​​轻松地将它们居中)。

最好的方法是什么?


在 WPF 中没有动画对齐,唯一可以出现的 - 它ThicknessAnimation。但您可以使用DiscreteObjectKeyFrame设置对齐方式。下面是一个简单的演示,其中Label set VerticalAlignment in Bottom:

<Grid>
    <Grid.Triggers>
        <EventTrigger SourceName="Small" RoutedEvent="Button.Click">
            <BeginStoryboard>
                <Storyboard>                        
                    <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetName="Test" Storyboard.TargetProperty="VerticalAlignment">
                        <DiscreteObjectKeyFrame KeyTime="0:0:0">
                            <DiscreteObjectKeyFrame.Value>
                                <VerticalAlignment>Bottom</VerticalAlignment>
                            </DiscreteObjectKeyFrame.Value>
                        </DiscreteObjectKeyFrame>
                    </ObjectAnimationUsingKeyFrames>
                </Storyboard>
            </BeginStoryboard>
        </EventTrigger>
    </Grid.Triggers>

    <Label x:Name="Test" Content="Test" Width="300" Height="300" Background="Aqua" VerticalAlignment="Top" HorizontalAlignment="Center" />

    <Button Name="Small" Content="Small" Width="100" Height="30" HorizontalAlignment="Right" VerticalAlignment="Top" />
</Grid>

将其与标准动画结合使用,例如DoubleAnimation,我想你一定能够实现这个目标。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

动画受面板限制 的相关文章

随机推荐

  • 错误:为参数指定的存储类

    我写了一段C代码 当我在 Linux 上编译它时 它在头文件中显示 以下错误 storage class specified for parameter i32 i8等等 typedef int i32 typedef char i8 您很
  • 正则表达式在 Javascript 中获取括号之间的字符串

    我正在尝试编写一个正则表达式 它返回括号之间的字符串 例如 我想获取位于字符串 和 之间的字符串 I expect five hundred dollars 500 会回来 500 Found 正则表达式在Javascript中获取两个字符
  • C++11 / 生成的构造函数

    我一直在从事由其他人 已离开公司 发起的 C 项目 他写了一段代码 看起来运行得很好 但我无法理解 下面是代码的简化版本 有两类 class Algo t protected Matrix t m Matrix public Algo t
  • 如何在 javascript 或 jquery 中将值与逗号分隔值进行比较

    我想将值与 javascript 或 jquery 中的逗号分隔值进行比较 为此 我做了以下代码 还剩下什么 var str reg val i got str 1 2 3 我需要将它与值进行比较 所以我该怎么做 if str 1 WBE
  • 有电影放映时间 api 吗? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • ‘sf’(R 包)命名空间加载失败,无法加载共享对象

    我正在尝试在 Centos 机器上安装 R sf 在 gdal 的扩展问题 现在通过从源代码构建修复 之后 我现在得到 Error package or namespace load failed for sf in dyn load fi
  • 如何模拟.net应用程序内存不足?

    好吧 我必须调试内存分配问题 随着时间的推移 应用程序会耗尽内存 我需要为 net 窗口应用程序模拟低内存系统 作为更快地重现内存不足问题的方法 PS 我的初步调查表明 内存泄漏是在应用程序分配非托管资源 托管 DX 时发生的 编写另一个程
  • 使用 EF PowerTools 逆向工程代码优先更改生成的上下文文件的名称

    我一直在尝试弄清楚如何制作 EF Power Tools Reverse Engineer Code First对生成的上下文文件使用不同的名称 比现在使用的要好 Example 我有一个名为我的 Awesome Dev Database
  • Web 服务器找不到请求的资源

    我在 VS 2008 SP1 上有一个 NET 3 5 Web 应用程序 在 Vista Ultimate 32 SP1 上运行 我在默认网站下创建了一个应用程序 所以应用程序的网址是 http localhost mysite http
  • Openlayers 3:以编程方式选择功能

    我正在尝试将我的系统从 Openlayers 2 升级到 Openlayers 3 但我遇到了一个我似乎无法解决的特定问题 我的应用程序有一个网格和一张地图 当用户单击网格时 我想选择地图上的相关点 在 Openlayers 2 中我使用了
  • 在 Ruby On Rails 上学习 BDD 的途径是什么?

    我想在 Ruby On Rails 上启动 BDD 我应该学习什么 我对 BDD RSpec 或 Cucumber 一无所知 最好的学习方式是什么 教程 涵盖 我应该测试什么行为 之类的内容 ETC thanks RSpec 特定 我保留这
  • 有没有办法在 Chrome 和/或 IE 中使用 JS 选择多个文本区域?

    Firefox 3 可以使用 JS 选择多个文本区域 有没有办法在 Chrome 和 IE 中做到这一点 我真的试图找到一种方法来选择多个 Chrome 和 IE9 中网页中的文本区域 信息位于 http help dottoro com
  • TemplateResolver.set Order user 在 thymeleaf 中的作用是什么?

    我使用 Thymeleaf 作为我的电子邮件模板 并且通过谷歌搜索并能够使用以下配置成功运行代码 Configuration public class TemplateEngineConfig Autowired private MailC
  • 不使用“.Copy”+“.Paste”粘贴格式

    例如 rngTo Value rngFrom Value2 Works rngTo NumberFormat rngFrom NumberFormat Works rngTo Cells Interior ColorIndex rngFro
  • 为什么向字符串添加 null 是合法的?

    MSDN 文章关于字符串基础知识 http msdn microsoft com en us library ms228362 aspx显示这个 string str hello string nullStr null string emp
  • Laravel Eloquent 与 keyBy 建立关系

    我有一个Product模型与一个hasMany关系 public function pricing return this gt hasMany App ProductPrice prod id id 然后我得到了关系 Product wi
  • 如何在 Ionic 6/Capacitor 中使用不同的 admob 方法?

    我有一个离子标签栏组件 我想显示一个 BannerAd 我在我的离子应用程序中使用了以下库 https github com capacitor community admob https github com capacitor comm
  • 如何使用 matplotlib 一起绘制训练和测试图

    我正在尝试将 y train y test 然后 y train pred y test pred 一起绘制在一张图中 我使用以下代码来执行此操作 plot plt plot y test plt plot y pred plt plot
  • Google VR 视频无法加载

    我正在使用谷歌网页版 VR 视图 https developers google com vr concepts vrview web加载 360 度视频 但是当我加载视频时 它说错误 渲染 视频加载错误 对象事件 这是控制台显示的内容 当
  • 动画受面板限制

    有点难以描述 但我会尽力 我有一个带有图像和标签的控件 它需要有 2 个状态 大 和 小 在 大 状态下 图像应位于控件顶部中心 标签应位于下方中心 就像带有图像和标签停靠在顶部的停靠栏一样 在 小 状态下 图像应该较小并且位于控件的左上角