2011-07-02 15 views
7

Mam groupboxes działające jak ekspandery w mojej aplikacji. Kiedy potrzebuję colla groupboksa, ustawię jego wysokość równą 0. kiedy potrzebuję go rozwinąć, ustawię jego wysokość równą auto (double.Nan). Można to zrobić za pomocą storyboardu. Jak mogłem wcześniej znać wysokość automatyczną? Mieszanie wyrażeń nie pozwala mi animować do automatu.Animacja wysokości groupbox od 0 do auto

enter image description here

Odpowiedz

5

Można użyć ScaleTransform tego

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

Kiedy zwinąć groupbox ustawić ScaleTransform.ScaleX 0. A kiedy expand ustawiony na 1.

+0

I rzeczywiście potrzebne do animacji z określonej wysokości na AUTO. Dlatego przed uruchomieniem animacji utworzę pętlę, która przetestuje, aby zobaczyć, w jakiej skali uzyskałbym przybliżoną wysokość 50 (spróbuj z .01 następnie .02 itd., Aż będzie blisko) i związaj tę zmienną z moim scenopisem. Dzięki Rikker –

14

Jak ja nienawidzę, bo skala transformacji Uważam to za brzydkie, szukałem innego rozwiązania.

Cóż, wiem, że jest to stary post i istnieje wiele rozwiązań, ale moje jest dość proste i nie czytałem go gdzie indziej, nawet jeśli ktoś znalazł to na pewno.
Zamiast animowanie wysokość od X do Auto (co jest niemożliwe), można pozwolić Wysokość do Auto i animowanie właściwości MaxHeight:

<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

Naprawdę sprytny i działa idealnie. –

+0

Nie próbowałem tego jeszcze, ale nie widzę, jak by to nie zadziałało. Całkiem sprytnie. – Kilazur

+2

Wiem teraz: nie znam dokładnego warunku, ale otrzymuję wyjątek InvalidOperationException, gdy próbuję powiązać 'To' z MaxHeight mojego okna lub z jego siatką. – Kilazur

Powiązane problemy