2011-01-05 9 views
5

Estoy trabajando en una aplicación para Windows Phone 7 que usa FluidMoveBehavior en algunos de mis ListBoxes. Por alguna razón, la animación FluidMoveBehavior parece querer activar en momentos inapropiados. Actualmente tengo un cuadro de lista en mi página principal, y utilizo el ItemsPanelTemplate siguiente, que es sólo un StackPanel básico con un FluidMoveBehavior que se le atribuye:FluidMoveBehavior triggering on Back navigation

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

Esto funciona bien cuando agrego/eliminar elementos, mientras que en la misma pantalla . La animación juega perfectamente. Sin embargo, cuando navego a una nueva página desde mi página principal, luego navego hacia atrás, la animación de movimiento de fluido se activa como si todos los elementos se hubieran agregado a la vez. ¿Hay alguna forma de desactivar este comportamiento, por lo que solo activa la animación cuando la lista realmente cambia?

+1

No puedo reproducir sus síntomas. ¿Qué mecanismo estás usando para navegar entre pantallas? –

+0

El botón Atrás o la función GoBack() activan este comportamiento. FYI, los ListBoxes están alojados dentro de PivotItems en un PivotControl. ¿El diseño está siendo invalidado de alguna manera por el PivotControl cuando el usuario navega hacia atrás? ¿Tal vez eso está causando que el comportamiento se active? –

Respuesta

1

esto sucede porque mientras navega hacia la página con el cuadro de lista, el cuadro de lista se crea nuevamente, que es similar a agregar todos los elementos a la vez que disparan el desencadenador de movimiento de fluido. Una solución posible (que puede no ser la legítima) es tener dos plantillas de ItemPanel idénticas, una con el comportamiento y la otra sin ella. Cuando navegue por primera vez a la página, aplique la plantilla sin el comportamiento. Más tarde sustitúyelo por el que tiene el comportamiento. Espero que ayude.

Cuestiones relacionadas