视觉状态下的动画不动画(WinRT)

时间:2013-09-24 20:14:25

标签: c# animation windows-runtime windows-8.1

我正在使用Windows 8.1 RTM进行开发。我有一个自定义控件具有double类型的自定义依赖项属性。此控件已放置在用户控件中。我在用户控件上调用VisualStateManager.GoToState(control,true)。动画应该转换2秒钟。但是,它只是从0到1以及从1到0进行快照。回调函数仅使用0或1调用。如果我直接将依赖项属性设置为0到1之间的任何值,它将按预期工作。

我有以下XAML:

<UserControl xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:controls="using:MyControls" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Grid>
    <VisualStateManager.VisualStateGroups>
        <VisualStateGroup x:Name="TestStates">
            <VisualStateGroup.Transitions>
              <VisualTransition GeneratedDuration="0:0:2"/>
            </VisualStateGroup.Transitions>
            <VisualState x:Name="A">
                <Storyboard>
                    <DoubleAnimation
                        EnableDependentAnimation="True"
                        Duration="0"
                        Storyboard.TargetName="MyControl1"
                        Storyboard.TargetProperty="MyDependencyProperty"
                        To="0"/>
                </Storyboard>
            </VisualState>
            <VisualState x:Name="B">
                <Storyboard>
                    <DoubleAnimation
                        EnableDependentAnimation="True"
                        Duration="0"
                        Storyboard.TargetName="MyControl1"
                        Storyboard.TargetProperty="MyDependencyProperty"
                        To="1"/>
                </Storyboard>
            </VisualState>
        </VisualStateGroup>
    </VisualStateManager.VisualStateGroups>
    <controls:MyControl x:Name="MyControl1" MyDependencyProperty="0">
</Grid>
</UserControl>

如果我将目标属性设置为不透明度,则可以正常工作。

看看之前的问题,EnableDependentAnimation似乎是这种行为的常见罪魁祸首,但我已将其设置为true。

Timeline.AllowDependentAnimations为真。

我已经将控件剥离到只有一个依赖属性,回调中没有逻辑。同样的问题。

1 个答案:

答案 0 :(得分:1)

看到我正在浏览依赖属性的动画,发现了一个我认为应该分享的互动点

要设置动画,动画的目标属性必须是依赖项属性。此外,要进行动画处理,目标属性的值类型必须由现有的Timeline派生的动画类型之一支持。应用并运行动画时,动画值的优先级高于属性具有的任何值(例如本地值)。动画还具有可选的HoldEnd行为,即使动画在视觉上似乎已停止,也可以将动画应用于属性值。

我不知道可能会有所帮助这里是文档的链接

animation