Я хочу, чтобы элемент интерфейса WPF отображался вертикально, когда его свойство Visibility переходит на «Visible». Я не хочу жестко кодировать Height в анимации, так как я хотел бы применить эту анимацию к любому элементу интерфейса в качестве стиля. Итак, я пытаюсь использовать ScaleY, но мне не повезло. Вот XAML для стиля и ListBox:Как оживить ScaleY, когда элемент станет видимым
<Style x:Key="VerticalGrow" TargetType="ListBox">
<Style.Triggers>
<Trigger Property="Visibility" Value="Visible">
<Trigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="TransformGroup.ScaleTransform.ScaleY" BeginTime="0:0:0.5" From="0" To="1" Duration="0:0:0.5" />
</Storyboard>
</BeginStoryboard>
</Trigger.EnterActions>
</Trigger>
</Style.Triggers>
</Style>
<ListBox Grid.Row="2" MaxHeight="60" MinHeight="60" Visibility="{Binding MyViewModel.ListBoxVisibility}" IsSynchronizedWithCurrentItem="False" ItemsSource="{Binding MyViewModel.ListBoxItems}" Style="{DynamicResource VerticalGrow}" IsTabStop="True">
</ListBox>
я получаю исключение во время выполнения жалуясь, что:
«Невозможно преобразовать значение атрибута„Стиль“для объекта типа«System.Windows.Style 'Невозможно разрешить все ссылки на свойства в пути свойств' TransformGroup.RenderTransform.ScaleTransform.ScaleY '. Убедитесь, что применимые объекты поддерживают свойства. Ошибка в объекте' System.Windows.Controls.ListBox 'в файле разметки' MyApp; component/mainwindow .xaml 'Строка 69 Позиция 399. "}
Спасибо. Это работает, хотя теперь я понимаю, что моя анимация не делает именно то, что я хочу, но это не имеет никакого отношения к вашему ответу. – Emmanuel