В WPF 3.5 (с SP1) у меня просто StackPanel, который я хотел бы анимировать, когда я изменяю свойство Visibility.. Я понятия не имею о высоте этой StackPanel, поскольку ее содержимое определяет ее высоту. Поэтому, когда я изменяю свойство своего StackPanel на Visible (progressPanel.Visibility = Visibility.Visible;), я хотел бы видеть анимацию (возможно, DoubleAnimationUsingKeyFrames с 0 на X).
Более того, у меня есть несколько StackPanel, которые я хотел бы видеть с таким поведением (так что в лучшем случае мне нужно что-то общее). Кто-нибудь знает, как это сделать?
Спасибо!





Если вам нужен эффект расширения с вертикально растущей анимацией. Сделайте двойную анимацию для свойства ScaleTransform.ScaleY панели от 0 до 1, если это панель с вертикальной ориентацией.
Вы можете создать и повторно использовать собственный стиль StackPanel, который запускает анимацию при изменении видимости:
<Style x:Key = "MyStyle" TargetType = "{x:Type StackPanel}">
<Style.Triggers>
<Trigger Property = "Visibility" Value = "Visible">
<Trigger.EnterActions>
<BeginStoryboard>
<Storyboard >
<DoubleAnimation .../>
</Storyboard>
</BeginStoryboard>
</Trigger.EnterActions>
</Trigger>
</Style.Triggers>
</Style>
Вы очень хорошо ответили на часть моего вопроса. Вторая часть - это то, как высота StackPanel. Учитывая, что я не знаю высоты, как мне использовать DoubleAnimation? <DoubleAnimation Storyboard.TargetProperty = "(FrameworkElement.Height)" From = "0" To = "- ??? -" Duration = "00: 00: 00.5" />
Непонятно, какого эффекта вы хотите добиться. Обновите свой вопрос и предоставьте подробную информацию о желаемом поведении StackPanel. Изменение свойства StackPanel.Height вручную не кажется мне хорошей идеей
Почему для меня негатив :). Если вы не можете определить фактическую высоту stackPanel, лучше анимировать ScaleTransform.ScaleX от 0 до 1, что поможет, попробуйте, а затем проголосуйте против.