2011-07-02 9 views
7

Tengo groupboxes actuando como expansores en mi aplicación. Cuando necesito colapsar un groupbox, configuro su altura igual a 0. Cuando necesito expandirlo, configuro su altura igual a auto (double.Nan) ¿es posible hacer esto con un guión gráfico? ¿Cómo podría saber la altura automática por adelantado. La combinación de expresiones no me permite animar a un auto.Animar altura de groupbox de 0 a auto

enter image description here

Respuesta

5

Usted puede utilizar ScaleTransform para este

<GroupBox Header="GroupBox"> 
    <GroupBox.RenderTransform> 
     <ScaleTransform ScaleY="1"/> 
    </GroupBox.RenderTransform> 
</GroupBox> 

Cuando el colapso de un cuadro de grupo establecido ScaleTransform.ScaleX a 0. Y cuando expanda puesto a 1.

+0

realidad necesito para animar desde una altura específica para auto. Por lo tanto, antes de ejecutar la animación, crearé un ciclo que probará para ver a qué escala obtendría una altura próxima de 50 (intente con .01 y luego con .02, etc. hasta que esté cerca) y vincule esa variable a mi guión gráfico. Gracias Rikker –

14

como odio transformación de escala debido Lo encuentro feo, busqué otra solución.

Bueno, sé que es una publicación anterior y existen muchas soluciones, pero la mía es bastante simple, y no la leí en ningún otro lugar, incluso si alguien la encontró con certeza.
lugar de animar la altura de X a Auto (lo cual es imposible), se puede dejar que la altura a Auto y animar la MaxHeight propiedad:

<MyControl x:Name="ctrlAutoHeight" Height="Auto"> 
    <MyControl.Triggers> 
     <EventTrigger RoutedEvent="myRoutedEvent"> 
      <BeginStoryboard> 
       <Storyboard> 
        <DoubleAnimation Storyboard.TargetName="ctrlAutoHeight" Storyboard.TargetProperty="MaxHeight" 
            From="0.0" To="{Binding ElementName=ParentControl, Path=ActualHeight}" 
            Duration="0:0:1" AutoReverse="False"/> 
       </Storyboard> 
      </BeginStoryboard> 
     </EventTrigger> 
    </MyControl.Triggers> 
</MyControl> 
+0

Realmente inteligente y funciona a la perfección. –

+0

No lo intenté todavía, pero no veo cómo no funcionaría. Muy inteligente. – Kilazur

+2

Lo sé ahora: no sé la condición exacta, pero obtengo una InvalidOperationException cuando trato de unir 'To' al MaxHeight de mi ventana, o a su cuadrícula. – Kilazur

Cuestiones relacionadas