バージョン

カスタム アニメーションの適用 (xamBusyIndicator)

トピックの概要

目的

このトピックでは、xamBusyIndicator コントロールにカスタム アニメーションを適用する方法について説明します。

前提条件

このトピックを理解するために、以下のトピックを参照することをお勧めします。

トピック 目的

このトピックでは、このコントロールでサポートする機能を開発者の観点から説明します。

このトピックでは、コントロールの視覚要素についての概要を紹介します。

このトピックの内容

このトピックは、以下のセクションで構成されます。

カスタム アニメーションの適用

概要

事前作成済みの xamBusyIndicator アニメーションのセットが提供されるだけではなく、カスタム アニメーションを作成して、コントロールに適用することもできます。

プレビュー

以下のスクリーンショットは最終結果のプレビューです。

Applying Custom Animation 1.png

手順

以下の手順では、カスタム アニメーションを xamBusyIndicator コントロールに適用する方法を示します。

  1. XamBusyIndicator をページに追加

xamBusyIndicator をページに追加します。

XAML の場合:

<ig:XamBusyIndicator Name="BusyIndicator" IsBusy="True" />
  1. カスタム DataTemplate の作成

カスタム データ テンプレートを Window リソースとして作成します。

XAML の場合:

<Window.Resources>
    <Style TargetType="{x:Type ProgressBar}" x:Key="ProgressBarStyle" >
    <!-- スタイルのコンテンツはここ -->
    </Style>
    <DataTemplate x:Key="CustomBusyIndicatorTemplate">
        <ProgressBar Height="22" Width="180" IsIndeterminate="True" Style="{StaticResource ProgressBarStyle}"  />
    </DataTemplate>
</Window.Resources>
  1. 作成した CustomBusyAnimation オブジェクトを Animation プロパティに設定

BusyAnimations クラスの CreateCustomAnimation メソッドを使用して作成した CustomBusyAnimation オブジェクトを、コードビハインドで XamBusyIndicator Animation プロパティに設定します。

C# の場合:

CustomBusyAnimation customAnimation = BusyAnimations.CreateCustomAnimation(this.Resources["CustomBusyIndicatorTemplate"] as DataTemplate);
BusyIndicator.Animation = customAnimation;

Visual Basic の場合:

Dim customAnimation As CustomBusyAnimation = BusyAnimations.CreateCustomAnimation(TryCast(Me.Resources("CustomBusyIndicatorTemplate"), DataTemplate))
BusyIndicator.Animation = customAnimation

または XAML で以下のコードを使用:

XAML の場合:

<ig:XamBusyIndicator.Animation>
    <ig:CustomBusyAnimation DataTemplate="{StaticResource CustomBusyIndicatorTemplate}" />
</ig:XamBusyIndicator.Animation>

完全なコード

以下は、この手順の完全なコードです。

  1. Window リソースとしてのカスタム テンプレートの作成

XAML の場合:

<Window.Resources>
    <Style TargetType="{x:Type ProgressBar}" x:Key="ProgressBarStyle" >
        <Setter Property="Foreground" Value="#FF0072C6"/>
        <Setter Property="Background" Value="#FFE0E0E0"/>
        <Setter Property="BorderThickness" Value="1"/>
        <Setter Property="BorderBrush" Value="#FF797979" />
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type ProgressBar}">
                        <Grid Name="TemplateRoot" SnapsToDevicePixels="true">
                            <Rectangle Fill="{TemplateBinding Background}"/>
                            <Rectangle Name="PART_Track" Margin="0" />
                            <Decorator x:Name="PART_Indicator" HorizontalAlignment="Left" Margin="0">
                                <Grid Name="Foreground">
                                    <Rectangle Fill="{TemplateBinding Foreground}" Name="Indicator"  />
                                    <Grid x:Name="Animation" ClipToBounds="true" Visibility="Hidden">
                                        <Rectangle Fill="{TemplateBinding Background}" Name="HiderPre" Margin="0,0,50,0" >
                                            <Rectangle.RenderTransform>
                                                <ScaleTransform x:Name="HiderPreTransform" ScaleX="0"/>
                                            </Rectangle.RenderTransform>
                                        </Rectangle>
                                        <Rectangle Fill="{TemplateBinding Background}" Name="HiderPost" RenderTransformOrigin="1, 0" Margin="50,0,0,0">
                                            <Rectangle.RenderTransform>
                                                <ScaleTransform x:Name="HiderPostTransform" ScaleX="1"  />
                                            </Rectangle.RenderTransform>
                                        </Rectangle>
                                    </Grid>
                                    <Grid Name="Overlay" Opacity="0.8"/>
                                </Grid>
                            </Decorator>
                            <Border BorderThickness="{TemplateBinding BorderThickness}"
                                        BorderBrush="{TemplateBinding BorderBrush}"
                                        CornerRadius="2"/>
                        </Grid>
                        <ControlTemplate.Triggers>
                            <Trigger Property="IsIndeterminate" Value="True">
                                <Setter TargetName="Animation" Property="Visibility" Value="Visible" />
                                <Trigger.EnterActions>
                                    <BeginStoryboard>
                                        <Storyboard RepeatBehavior="Forever">
                                        <DoubleAnimation Storyboard.TargetName="HiderPreTransform"
                                                                 Storyboard.TargetProperty="(ScaleTransform.ScaleX)" To="1"
                                                                 Duration="0:00:1" AutoReverse="True"/>
                                        <DoubleAnimation Storyboard.TargetName="HiderPostTransform"
                                                                 Storyboard.TargetProperty="(ScaleTransform.ScaleX)" To="0"
                                                                 Duration="0:00:1" AutoReverse="True"/>
                                    </Storyboard>
                                </BeginStoryboard>
                            </Trigger.EnterActions>
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
    <DataTemplate x:Key="CustomBusyIndicatorTemplate">
        <ProgressBar Height="22" Width="180" IsIndeterminate="True" Style="{StaticResource ProgressBarStyle}"  />
    </DataTemplate>
</Window.Resources>
  1. ページへの xamBusyIndicator の追加と Animation プロパティへの CustomBusyAnimation の設定

XAML の場合:

<ig:XamBusyIndicator Name="BusyIndicator" IsBusy="True">
    <ig:XamBusyIndicator.Animation>
        <ig:CustomBusyAnimation DataTemplate="{StaticResource CustomBusyIndicatorTemplate}" />
    </ig:XamBusyIndicator.Animation>
</ig:XamBusyIndicator>

関連コンテンツ

トピック

このトピックの追加情報については、以下のトピックも合わせてご参照ください。

トピック 目的

このトピックでは、 xamBusyIndicator コントロールで使用できるビルド済みのアニメーションとその構成可能な項目について簡単に説明します。

このトピックでは、コントロールに関連したキー クラスに関する参考情報を提供します。