gpt4 book ai didi

c# - 动画依赖属性

转载 作者:行者123 更新时间:2023-11-30 13:47:56 25 4
gpt4 key购买 nike

我有一个自定义用户控件,它注册了一个依赖属性 HoverHeight:

public sealed partial class VirtualPointer : UserControl
{
public static readonly DependencyProperty HoverHeightProperty =
DependencyProperty.Register("HoverHeight", typeof(double),
typeof(VirtualPointer), new PropertyMetadata(1.0,OnHoverHeightChanged));

public double HoverHeight
{
get { return (double)GetValue(HoverHeightProperty); }
set { SetValue(HoverHeightProperty, value); }
}
...

我使用此属性结合相应的 IValueConverter 来计算一些子控件的 Margins

在使用此控件的页面中,我创建了一个 Storyboard,它应该为 HoverHeight 属性设置动画:

<Page ...>
<Page.Resources>
<Storyboard>
<DoubleAnimationUsingKeyFrames Storyboard.TargetName="virtualPointer" Storyboard.TargetProperty="HoverHeight">
<LinearDoubleKeyFrame Value="1.0" KeyTime="0:0:0"/>
<LinearDoubleKeyFrame Value="0.0" KeyTime="0:0:1"/>
<LinearDoubleKeyFrame Value="1.0" KeyTime="0:0:2"/>
<LinearDoubleKeyFrame Value="0.0" KeyTime="0:0:3"/>
<LinearDoubleKeyFrame Value="1.0" KeyTime="0:0:4"/>
</DoubleAnimationUsingKeyFrames>
<!-- other DoubleAnimationUsingKeyFrames -->
</Storyboard>
</Page.Resources>
<!-- ... -->
<local:VirtualPointer Name="virtualPointer" HoverHeight="0.5"/>
</Page>

Storyboard包含其他按预期工作的动画。但是,当我启动 Storyboard时,HoverHeight 值不会改变。既没有调用 OnHoverHeightChanged 处理程序,也没有调用具有新值的转换器。我可以使用属性 setter 设置一个新值,该 setter 又会调用 OnHoverHeightChanged 处理程序,因此动画可能存在问题。

启动 Storyboard时没有输出或产生异常。

我是不是漏掉了什么?如何为自定义依赖属性设置动画?

最佳答案

将动画的 EnableDependentAnimation 属性设置为 True。

默认情况下,从属动画根本不会在 Windows 8 上运行。默认情况下,它们是独立的动画(例如执行 GPU 变换的动画),因此您将无法在 UI 线程上收到更改通知。至少这是我的理解。

关于c# - 动画依赖属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14685379/

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