Sous ce titre un peu confus se cache la question suivante :

Dans mon interface, j'affiche une animation lors d'un chargement de données un peu longuet.

Cette animation c'est un classique cercle composé de blocs comme ceci :


J'ai donc un Storyboard contenant une ColorAnimation pour chaque bloc
Code xaml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 
 <Storyboard x:Key="ProgressAnimation" RepeatBehavior="Forever">
 
            <ColorAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="block1" Storyboard.TargetProperty="(UIElement.OpacityMask).(SolidColorBrush.Color)">
                <SplineColorKeyFrame KeyTime="00:00:00" Value="Black"/>
                <SplineColorKeyFrame KeyTime="00:00:00.2290000" Value="#EF000000"/>
                <SplineColorKeyFrame KeyTime="00:00:00.4590000" Value="#E2000000"/>
                <SplineColorKeyFrame KeyTime="00:00:00.6880000" Value="#D3000000"/>
                <SplineColorKeyFrame KeyTime="00:00:00.9180000" Value="#C6000000"/>
                <SplineColorKeyFrame KeyTime="00:00:01.1470000" Value="#B7000000"/>
                <SplineColorKeyFrame KeyTime="00:00:01.3760000" Value="#AA000000"/>
                <SplineColorKeyFrame KeyTime="00:00:01.6060000" Value="#9B000000"/>
                <SplineColorKeyFrame KeyTime="00:00:01.8350000" Value="#8E000000"/>
                <SplineColorKeyFrame KeyTime="00:00:02.0650000" Value="#7F000000"/>
                <SplineColorKeyFrame KeyTime="00:00:02.2940000" Value="#72000000"/>
                <SplineColorKeyFrame KeyTime="00:00:02.5240000" Value="#63000000"/>
                <SplineColorKeyFrame KeyTime="00:00:02.7530000" Value="#56000000"/>
                <SplineColorKeyFrame KeyTime="00:00:02.9820000" Value="#3D000000"/>
                <SplineColorKeyFrame KeyTime="00:00:03.2120000" Value="#26000000"/>
                <SplineColorKeyFrame KeyTime="00:00:03.4410000" Value="#19000000"/>
                <SplineColorKeyFrame KeyTime="00:00:03.6710000" Value="#0C000000"/>
                <SplineColorKeyFrame KeyTime="00:00:03.9000000" Value="#00000000"/>
            </ColorAnimationUsingKeyFrames>
[...]
</Storyboard>

Je souhaitais savoir si il était possible depuis du XAML (pas par du C#) de déclarer la ColorAnimation en tant que Resources et de la réutiliser autant de fois que je le souhaite en définissant par la suite le TargetName du Storyboard.

Quelque chose qui ressemblerait à ça en quelque sorte

Code xaml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<UserControl.Resources>
    <ColorAnimationUsingKeyFrames x:Key="myColorAnimation" BeginTime="00:00:00">
        <SplineColorKeyFrame KeyTime="00:00:00" Value="#EF000000"/>
        <SplineColorKeyFrame KeyTime="00:00:00.2290000" Value="#E2000000"/>
        <SplineColorKeyFrame KeyTime="00:00:00.4590000" Value="#D3000000"/>
        <SplineColorKeyFrame KeyTime="00:00:00.6880000" Value="#C6000000"/>
        <SplineColorKeyFrame KeyTime="00:00:00.9180000" Value="#B7000000"/>
        <SplineColorKeyFrame KeyTime="00:00:01.1470000" Value="#AA000000"/>
        <SplineColorKeyFrame KeyTime="00:00:01.3760000" Value="#9B000000"/>
        <SplineColorKeyFrame KeyTime="00:00:01.6060000" Value="#8E000000"/>
        <SplineColorKeyFrame KeyTime="00:00:01.8350000" Value="#7F000000"/>
        <SplineColorKeyFrame KeyTime="00:00:02.0650000" Value="#72000000"/>
        <SplineColorKeyFrame KeyTime="00:00:02.2940000" Value="#63000000"/>
        <SplineColorKeyFrame KeyTime="00:00:02.5240000" Value="#56000000"/>
        <SplineColorKeyFrame KeyTime="00:00:02.7530000" Value="#3D000000"/>
        <SplineColorKeyFrame KeyTime="00:00:02.9820000" Value="#26000000"/>
        <SplineColorKeyFrame KeyTime="00:00:03.2120000" Value="#19000000"/>
        <SplineColorKeyFrame KeyTime="00:00:03.4410000" Value="#0C000000"/>
        <SplineColorKeyFrame KeyTime="00:00:03.6710000" Value="#00000000"/>
        <SplineColorKeyFrame KeyTime="00:00:03.9000000" Value="Black"/>
    </ColorAnimationUsingKeyFrames>
</UserControl.Resources>
<Storyboard x:Key="ProgressAnimation" RepeatBehavior="Forever">
    <ColorAnimationUsingKeyFrames ColorAnimationUsingKeyFrames="{StaticResource myColorAnimation}" Storyboard.TargetName="block1" Storyboard.TargetProperty="(UIElement.OpacityMask).(SolidColorBrush.Color)">
    <ColorAnimationUsingKeyFrames ColorAnimationUsingKeyFrames="{StaticResource myColorAnimation}" Storyboard.TargetName="block2" Storyboard.TargetProperty="(UIElement.OpacityMask).(SolidColorBrush.Color)">
    [...]
</Storyboard>

J'espère avoir été assez clair, merci d'avance pour votre aide.

Laurent