WPF动画扩展合约高度

时间:2009-08-14 09:15:39

标签: wpf animation mvvm click

我希望在图像上有一个触发器,通过设置其高度属性来扩展和收缩ItemsSource。

我有一个绑定到ObservableCollection的通用ItemsSource,所以我不知道这个控件的总高度。

单击图像后,应更改其图像源字形以显示itemssource已展开。再次单击它后,ItemsSource应该从其当前高度开始收缩回到0 - 因为第一个动画可能没有完成。

目前我有以下图片触发器:

<Image Name="ExpandImage" Source="ArrowDown.png">
            <Image.Triggers>
                <EventTrigger RoutedEvent="Image.MouseLeftButtonDown">
                    <EventTrigger.Actions>
                        <BeginStoryboard>
                            <Storyboard>
                                <DoubleAnimation Storyboard.TargetProperty="Height"                                                     
                                            Storyboard.TargetName="myItemsControl"
                                             From="0" To="300" Duration="0:0:2" />
                            </Storyboard>
                        </BeginStoryboard>
                    </EventTrigger.Actions>
                </EventTrigger>
            </Image.Triggers>
        </Image>

这很难看,因为它会动画到固定的高度 - 我需要它来设置ItemsControl的总(未知高度)动画。此外,它只支持单向(扩展)动画。

我的ItemsControl很简单:

 <ItemsControl Name="myItemsControl" 
        ItemsSource="{Binding Items}"  Height="0" >
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <c:CustomUserControl/>
            </DataTemplate>
        </ItemsControl.ItemTemplate>
    </ItemsControl>

1 个答案:

答案 0 :(得分:1)

您可以使用... well,ActualHeight属性获取Items Control的实际高度。问题是它不是依赖属性。但是,您可以使用像Kent Boogaart在this answer中所做的附加行为来绑定它。

那应该让你绑定到实际的高度。我会留给你写下附加的行为。 :)