Как оживить ScaleY, когда Элемент становится видимым - PullRequest
1 голос
/ 22 июня 2010

Я бы хотел, чтобы элемент пользовательского интерфейса WPF отображался вертикально, когда его свойство Visibility переходит в "Visible".Я не хочу жестко кодировать высоту в анимации, поскольку я хотел бы применить эту анимацию к любому элементу пользовательского интерфейса в качестве стиля.Итак, я пытаюсь использовать ScaleY, но мне не везет.Вот XAML для стиля и списка:

<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>

Я получаю исключение времени выполнения, жалуясь на то, что:

"Невозможно преобразовать значение в атрибуте" Стиль "в объект типа" Система.Windows.Style ". Не удается разрешить все ссылки на свойства в пути свойства" TransformGroup.RenderTransform.ScaleTransform.ScaleY ". Убедитесь, что соответствующие объекты поддерживают свойства. Ошибка в объекте" System.Windows.Controls.ListBox "в файле разметки" MyApp; component / mainwindow.xaml 'Строка 69, Позиция 399. "}

1 Ответ

2 голосов
/ 22 июня 2010

ListBox не имеет свойства TransformGroup. Я думаю, что вы хотите установить RenderTransform или LayoutTransform в ScaleTransform, а затем анимировать это.

<Style x:Key="VerticalGrow" TargetType="ListBox">
    <Setter Property="RenderTransform">
        <Setter.Value>
            <ScaleTransform/>
        </Setter.Value>
    </Setter>
    <Style.Triggers>
        <Trigger Property="Visibility" Value="Visible">
            <Trigger.EnterActions>
                <BeginStoryboard>
                    <Storyboard>
                        <DoubleAnimation
                            Storyboard.TargetProperty="RenderTransform.ScaleY"
                            BeginTime="0:0:0.5" From="0" To="1" Duration="0:0:0.5" />
                    </Storyboard>
                </BeginStoryboard>
            </Trigger.EnterActions>
        </Trigger>
    </Style.Triggers>
</Style>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...