使用XamlFlair动画化WPF扩展器

问题描述

我不知道如何使用XamlFlair为WPF Expander设置动画。我最简单的模板(应从顶部扩展到底部,然后从收缩到顶部):

<ControlTemplate targettype="{x:Type Expander}">
    <DockPanel>
        <!-- EXPANDER HEADER -->
        <ToggleButton x:Name="ExpanderButton"
                        DockPanel.Dock="Top"
                        HorizontalContentAlignment="Stretch"
                        IsChecked="{Binding IsExpanded,RelativeSource={RelativeSource TemplatedParent}}"
                        Content="Expand me"/>
        <!-- EXPANDER CONTENT -->
        <ContentPresenter x:Name="ExpanderContent"
                            DockPanel.Dock="Bottom"
                            xf:Animations.CombinedBinding="{Binding IsExpanded,RelativeSource={RelativeSource TemplatedParent}}"
                            xf:Animations.Primary="{xf:Animate BasedOn={StaticResource ScaleFromTop},Event=None,TransformOn=Layout}"
                            xf:Animations.Secondary="{xf:Animate BasedOn={StaticResource ScaletoTop},TransformOn=Layout}"
                            xf:Animations.StartWith="{StaticResource ScaletoTop}">
        </ContentPresenter>
    </DockPanel>
</ControlTemplate>

问题在于,无论初始IsExpanded属性值是多少,Expander都会在开始时呈现扩展。当我添加xf:Animations.StartWith="{StaticResource ScaletoTop}"(或ScaleFromTop-不管哪个)时,不仅不能解决问题,而且Expander的内容始终为空白。

有人知道如何使它按预期工作吗?谢谢。

解决方法

我挠了两​​天,在发布问题5分钟后才想出解决方案。

未使用xf:Animations.StartWith,而是添加了以下内容:

<ContentPresenter.LayoutTransform>
    <ScaleTransform ScaleX="1" ScaleY="0" />
</ContentPresenter.LayoutTransform>

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...