FluidMoveBehavior在后退导航上触发

时间:2011-01-05 15:21:28

标签: c# silverlight xaml mobile windows-phone-7

我正在开发一个Windows Phone 7应用程序,它在我的一些ListBox中使用FluidMoveBehavior。出于某种原因,FluidMoveBehavior动画似乎想要在不适当的时间激活。我目前在我的主页上有一个ListBox,我使用以下ItemsPanelTemplate,它只是一个附有FluidMoveBehavior的基本StackPanel:

<ItemsPanelTemplate x:Key="fancyListBoxItemsPanelTemplate"> 
    <StackPanel> 
        <Custom:Interaction.Behaviors> 
            <il:FluidMoveBehavior AppliesTo="Children"> 
                <il:FluidMoveBehavior.EaseX> 
                    <ExponentialEase EasingMode="EaseInOut"/> 
                </il:FluidMoveBehavior.EaseX> 
                <il:FluidMoveBehavior.EaseY> 
                    <ExponentialEase EasingMode="EaseInOut"/> 
                </il:FluidMoveBehavior.EaseY> 
            </il:FluidMoveBehavior> 
        </Custom:Interaction.Behaviors> 
    </StackPanel> 
</ItemsPanelTemplate> 

当我在同一屏幕上添加/删除项目时,此工作正常。动画播放完美。但是,当我从主页面导航到新页面,然后向后导航时,将触发流畅的移动动画,就像所有项目一次添加一样。是否有任何方法可以禁用此行为,因此它只会在列表实际更改时触发动画?

1 个答案:

答案 0 :(得分:1)

这种情况正在发生,因为当您导航到带有列表框的页面时,会再次创建列表框,这类似于一次添加所有项目,这些项目在tuns中触发流体移动触发器。一种可能的(可能不是合法的)解决方案是具有两个相同的ItemPanel模板,一个具有行为而另一个没有它。当您第一次导航到页面时,应用模板没有行为。稍后将其替换为具有该行为的那个。 希望有所帮助。