【问题标题】:FluidMoveBehavior triggering on Back navigation在返回导航上触发 FluidMoveBehavior
【发布时间】:2011-01-05 15:21:27
【问题描述】:

我正在开发一个 Windows Phone 7 应用程序,该应用程序在我的一些 ListBox 中使用 FluidMoveBehavior。出于某种原因,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> 

当我在同一屏幕上添加/删除项目时,这可以正常工作。动画播放完美。但是,当我从主页面导航到新页面,然后返回时,会触发流畅的移动动画,就好像所有项目都一次添加一样。有什么方法可以禁用此行为,使其仅在列表实际更改时触发动画?

【问题讨论】:

  • 我无法重现您的症状。您使用什么机制在屏幕之间导航?
  • 后退按钮或 GoBack() 函数都会触发此行为。仅供参考,ListBoxes 托管在 PivotControl 的 PivotItems 中。当用户导航回来时,布局是否被 PivotControl 以某种方式无效?也许这导致行为被触发?

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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-03
    • 1970-01-01
    • 2021-06-10
    • 1970-01-01
    • 1970-01-01
    • 2013-11-15
    • 1970-01-01
    相关资源
    最近更新 更多