0

これは、潜在的な顧客に取引を宣伝するためのものであるため、人間とのやり取りの要素はありません.

現時点では、ItemsControl に要素をバインドするだけで、ストーリーボード アニメーションがループします。残念ながら、一度に 4 つのアイテムを表示し、それらを 10 秒間停止してから、次の 4 つを表示したいと考えています。幅 (水平に回転します) は 1920px です。

1から4、次に5から8を表示し、「1」にループバックする私の現在の実装は次のとおりです。

        <ItemsControl Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="3" ItemsSource="{Binding Path=VisibleDigitalCoupons}">
            <ItemsControl.ItemsPanel>
                <ItemsPanelTemplate>
                    <StackPanel Orientation="Horizontal" HorizontalAlignment="Left" />
                </ItemsPanelTemplate>
            </ItemsControl.ItemsPanel>
            <ItemsControl.ItemTemplate>
                <DataTemplate>
                    <DataTemplate.Resources>
                        <Storyboard x:Key="RotateDigitalCoupons" BeginTime="0:0:0" Duration="0:0:10" RepeatBehavior="Forever" Completed="RotateDigitalCouponsCompleted">
                            <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(TranslateTransform.X)" Storyboard.TargetName="digitalCouponView">
                                <EasingDoubleKeyFrame KeyTime="0:0:5" Value="0"></EasingDoubleKeyFrame>
                                <EasingDoubleKeyFrame KeyTime="0:0:10" Value="-1920">
                                    <EasingDoubleKeyFrame.EasingFunction>
                                        <CubicEase EasingMode="EaseInOut"></CubicEase>
                                    </EasingDoubleKeyFrame.EasingFunction>
                                </EasingDoubleKeyFrame>
                            </DoubleAnimationUsingKeyFrames>
                        </Storyboard>
                    </DataTemplate.Resources>
                    <views:DigitalCouponView x:Name="digitalCouponView" Margin="40,40,20,20" Height="240" Width="420" RenderTransformOrigin="0.5,0.5" >
                        <views:DigitalCouponView.RenderTransform>
                            <TransformGroup>
                                <TranslateTransform/>
                            </TransformGroup>
                        </views:DigitalCouponView.RenderTransform>
                    </views:DigitalCouponView>
                    <DataTemplate.Triggers>
                        <EventTrigger RoutedEvent="Window.Loaded">
                            <BeginStoryboard x:Name="RotateDigitalCoupons_BeginStoryboard" Storyboard="{StaticResource RotateDigitalCoupons}"/>
                        </EventTrigger>
                    </DataTemplate.Triggers>
                </DataTemplate>
            </ItemsControl.ItemTemplate>
        </ItemsControl>

Completed イベントを使用して「可視クーポン」の更新を開始し、アニメーションを再利用しようとする試みは、アニメーションが永遠に繰り返し動作するため、失敗に終わりました。ただし、それをオフにしても、イベントの発火が完了しないため、これは行き止まりです。

誰かがアイデアを持っているか、以前にこれに対処しましたか? 私のプロセスに何らかの欠陥がありますか?

4

1 に答える 1

1

現在の状態に応じてロジックを実行し、表示されるデータ ドリブン コンポーネントを処理するステート マシンを含む Dispatch Timer を作成します。タイマー内で、必要に応じてアニメーションをオンまたはオフにします。

もちろん、アニメーションをより一般的なものにする必要がありますが、タイマーで活用できるフレームワークがあります。

于 2015-08-10T15:53:11.543 に答える