2013-11-11 4 views
1

Я хочу создать контейнер в WPF, который отобразит переменное количество элементов. Эти элементы будут прикреплены к контейнеру через коллекцию через DependencyProperty.WPF rolldown animation

Я хотел бы отобразить этот контейнер, свернутый до тех пор, пока элементы не установлены. Затем, когда элементы установлены, я хотел бы оживить прокачку контейнера до размера, когда все предметы будут доступны.

Я новичок в анимации WPF, но для меня это выглядит довольно просто. Я не знаю, как указать начальный и конечный размер контейнера без ввода точных размеров в пикселях. Мне нужно оживить (размер без дополнительных элементов управления) до (размер с дополнительными элементами управления), и я совершенно не знаю, с чего начать.

Как я могу указать такие относительные размеры в раскадровке анимации WPF?

ответ

1

Вы можете сделать что-то подобное, используя ActualHeight свойство:

<Grid Name="LayoutRoot"> 
    <Grid Name="Container" ClipToBounds="True"> 
     <ListBox ItemsSource="{Binding YourCollection}" ... > 
      <ListBox.Triggers> 
       <EventTrigger RoutedEvent="ListBox.SizeChanged"> 
        <BeginStoryboard> 
         <Storyboard> 
          <DoubleAnimation Storyboard.TargetName="Container" 
Storyboard.TargetProperty="Height" To="{Binding ActualHeight, ElementName=LayoutRoot, 
FallbackValue=0, Mode=OneWay}" Duration="00:00:0.3" /> 
         </Storyboard> 
        </BeginStoryboard> 
       </EventTrigger> 
      </ListBox.Triggers> 
     </ListBox> 
    </Grid> 
</Grid> 

Заметьте, что я не использовал From свойство DoubleAnimation ... это позволит анимацию «расти», поскольку каждый пункт добавлен.

+0

Спасибо - мне придется исследовать это решение. В моем случае речь идет о показателе контента или нет. Элемент управления отображается без содержимого, и когда это содержимое прикрепляется, управление должно скатиться вниз, чтобы отобразить его. – Spook