2009-11-03 6 views
19

Actualmente tengo un cuadro de lista que tiene su elemento seleccionado unido a un inmueble en mi modelo de vista. Siempre que el elemento seleccionado no sea nulo, quiero realizar una animación en él. Sin embargo me siguen dando el siguiente error "No se puede congelar este árbol línea de tiempo Storyboard para su uso en las discusiones" y de la investigación especie de entender por qué ocurre esto. Sin embargo, no estoy seguro de qué enfoque debo seguir para obtener el comportamiento que deseo.WPF Animación "No se puede congelar este árbol línea de tiempo Storyboard para su uso en las discusiones"

<Storyboard x:Key="ShowItemEdit"> 
    <DoubleAnimation 
     Storyboard.TargetName="lstItemList" 
     Storyboard.TargetProperty="ListBox.Width" 
     To="{Binding ActualWidth, ElementName=UserControl}" 
     Duration="0:0:0.40" /> 
    ... 
</Storyboard> 

<Style x:Key="ListStyle"> 
    <Style.Triggers> 
     <DataTrigger Binding="{Binding SelectedItem, Converter={StaticResource IsNullConverter}}" Value="False"> 
      <DataTrigger.EnterActions> 
      <BeginStoryboard Storyboard="{StaticResource ShowItemEdit}" /> 
     </DataTrigger.EnterActions> 
     </DataTrigger> 
    </Style.Triggers> 
</Style> 

<ListBox x:Name="lstItemList" Style={StaticResource ListStyle}" SelectedItem="{Binding SelectedItem}"> 
    ... 
</ListBox> 

Respuesta

25

¿Puedes publicar tu Guion gráfico? Parece que tienes algún tipo de enlace en la definición del guión gráfico.


Ok por lo que, como sospechaba, es porque estás usando una Binding en su Storyboard. No se puede hacer esto porque WPF intenta freeze todos los recursos movilizados por una plantilla para la eficiencia y cuando se utiliza una unión en un Freezable, en este caso el Storyboard, que le impide ser capaz de ser congelados.

+0

he añadido el código de guión gráfico. Yo ato la propiedad 'To' ya que no quiero codificar el ancho. – jwarzech

+0

Ese es su problema, entonces, lo explicaré. –

+0

¡Gracias por la explicación! ¿Alguna sugerencia sobre cómo puedo lograr este guión gráfico (con enlace) sin tener que conectar el disparador de datos al control? – jwarzech

5

Hay una técnica que se puede utilizar para moverse por la cuestión puede congelar que le permite utilizar un enlace para el "A" valor de su animación (en lugar de codificar un valor allí). Es bastante sencillo y lo he descrito here.

Cuestiones relacionadas