1

我有一个ListBox将绑定到数据源ItemTemplate并将成为用户控件的项目。我需要将新项目添加到数据源集合中以动画化/从视野外移入视野。

这就是我所拥有的。(请忽略缺少数据绑定/ ItemTemplate)我想专注于动画。

<ListBox Width="350" Height="125">
   <ListBox.ItemContainerStyle>
      <Style TargetType="{x:Type ListBoxItem}">
         <Setter Property="LayoutTransform">
            <Setter.Value>
               <ScaleTransform x:Name="transform"/>
            </Setter.Value>
         </Setter>
         <Style.Triggers>
            <EventTrigger RoutedEvent="Loaded">
               <EventTrigger.Actions>
                  <BeginStoryboard>
                     <Storyboard>
                        <DoubleAnimation Storyboard.TargetProperty="Opacity" From="0" To="1" Duration="0:0:5" />
                        <DoubleAnimation Storyboard.TargetProperty="RenderTransform.(TranslateTransform.X)" To="-0"/>
                     </Storyboard>
                  </BeginStoryboard>
               </EventTrigger.Actions>
            </EventTrigger>
         </Style.Triggers>
      </Style>
   </ListBox.ItemContainerStyle>
   <ListBoxItem>
      <Rectangle Width="320" Height="50" Fill="Green">
         <Rectangle.RenderTransform>
            <TranslateTransform X="-50"/>
         </Rectangle.RenderTransform>
      </Rectangle>
   </ListBoxItem>
</ListBox>

如果您运行它,您将看到不透明度更改有效。但是,该项目不会动画到 0。如果我添加持续时间,它也不起作用。

4

2 回答 2

2

这就是我在 listboxitems 上做向上滑动动画的方式:

<ListBox DataContextChanged="klantListBox_DataContextChanged" Name="klantListBox" Width="380" Height="255" Margin="0 10 10 0" ItemsSource="{Binding}" SelectionChanged="klantListBox_SelectionChanged">
                <ListBox.ItemContainerStyle>
                    <Style TargetType="{x:Type ListBoxItem}">
                    <Setter Property="RenderTransform">
                        <Setter.Value>
                            <TranslateTransform Y="230" X="0"  />
                        </Setter.Value>
                    </Setter>
                    <Style.Triggers>
                        <EventTrigger RoutedEvent="Loaded">
                            <EventTrigger.Actions>
                                <BeginStoryboard>
                                    <Storyboard>

                                        <DoubleAnimation Storyboard.TargetProperty="RenderTransform.(TranslateTransform.Y)" To="0"/>
                                    </Storyboard>
                                </BeginStoryboard>
                            </EventTrigger.Actions>
                        </EventTrigger>
                    </Style.Triggers>
                </Style>
                </ListBox.ItemContainerStyle>
            </ListBox>
于 2014-10-03T07:35:26.757 回答
1

由于 TargetType="{x:Type ListBoxItem}" 转换是在 Rectangle.RenderTransform. 将 移动<TranslateTransform x="-50">到 ListBoxItem 的RenderTransform.

于 2014-05-12T14:45:36.867 回答