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

<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>

当我在同一屏幕上添加/删除项目时,此方法效果很好。动画播放完美。但是,当我从主页导航到新页面,然后向后导航时,将触发流畅移动动画,就好像一次添加所有项一样。有什么方法可以禁用此行为,以便仅在列表实际更改时才触发动画?

最佳答案

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

关于c# - Back导航上的FluidMoveBehavior触发,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4605735/

10-11 19:22
查看更多