Place storyboard en recursos de la aplicación

Necesito usar el mismo guión gráfico en varios lugares, por lo tanto, coloqué el guión gráfico dentro de mi aplicación. Cuando intento ejecutar el guión gráfico, el único problema es que necesito hacer referencia al objetivo que quiero animar. Aquí está mi guión gráfico:

    <System:String x:Key="target">border2</System:String>
    <Storyboard x:Key="stHeight">
        <DoubleAnimationUsingKeyFrames 
            Storyboard.TargetProperty="(FrameworkElement.Height)" 
            Storyboard.TargetName="{DynamicResource target}"> 
            <EasingDoubleKeyFrame KeyTime="0:0:1" Value="90">
                <EasingDoubleKeyFrame.EasingFunction>
                    <CircleEase EasingMode="EaseOut"/>
                </EasingDoubleKeyFrame.EasingFunction>
            </EasingDoubleKeyFrame>
        </DoubleAnimationUsingKeyFrames>
    </Storyboard>

la forma en que animé la altura de un objeto diferente es cambiando el objetivo del recurso dinámico. Pude hacerlo cuando el guión gráfico estaba en la ventana actual. Pero ahora que quiero colocarlo en los recursos de la aplicación, no sé cómo hacer referencia a la propiedad de destino.

EDITA

La solución que publiqué anteriormente funciona bien, pero a veces es difícil crear animaciones complejas con código. así que otra solución alternativa que resolví fue crear el guión gráfico con una combinación de expresiones. así que arrastro un control aleatorio a la ventana principal en la combinación de expresiones y creo una animación aleatoria. Digamos que la animación sale como:

         <Storyboard x:Key="Storyboard1">
            <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.X)" Storyboard.TargetName="grid">
                <EasingDoubleKeyFrame KeyTime="0:0:1" Value="90"/>
            </DoubleAnimationUsingKeyFrames>
            <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.Y)" Storyboard.TargetName="grid">
                <EasingDoubleKeyFrame KeyTime="0:0:1" Value="103"/>
            </DoubleAnimationUsingKeyFrames>
            <PointAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransformOrigin)" Storyboard.TargetName="grid">
                <EasingPointKeyFrame KeyTime="0:0:1" Value="0.75,0.5"/>
            </PointAnimationUsingKeyFrames>
            <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[2].(RotateTransform.Angle)" Storyboard.TargetName="grid">
                <EasingDoubleKeyFrame KeyTime="0:0:1" Value="75"/>
            </DoubleAnimationUsingKeyFrames>
        </Storyboard>

Luego copio ese código y lo pego en mi ventana de trabajo NO EN LA APP.XAML.

y luego en mi código digamos que tengo un:

<Border Name="brdBorder" BorderBrush="Silver" BorderThickness="1" Margin="328,104,0,0"  Background="#FFE52E2E" HorizontalAlignment="Left" Width="94" Height="100" VerticalAlignment="Top" >
    <Border.RenderTransform>
        <TransformGroup>
            <ScaleTransform/>
            <SkewTransform/>
            <RotateTransform/>
            <TranslateTransform/>
        </TransformGroup>
    </Border.RenderTransform>
</Border>

por alguna razón, el grupo de transformación tiene que estar allí para animar el objeto. de todos modos, digamos que tengo ese huésped en mi ventana de trabajo y quiero animarlo con la misma animación que creé con la combinación de expresiones. lo que haré en código es:

Storyboard sb1 = FindResource("Storyboard1") as Storyboard;

foreach (var child in sb1.Children)
{
    Storyboard.SetTargetName(child, brdBorder.Name);
}

sb1.Begin(this);

y luego puedo animar ese borde en mi ventana de trabajo. Lo bueno de esto es que puedo aplicar la misma animación a varios objetos (creo que es el propósito de crear un recurso) el problema surge cuando intento colocar el guión gráfico en un diccionario de recursos o en la aplicación. archivo. cuando hago eso, c # puede encontrar el guión gráfico pero las propiedades del guión gráfico son de solo lectura, por lo tanto, aparece el error:

Cannot set a property on object 'System.Windows.Media.Animation.DoubleAnimationUsingKeyFrames' because it is in a read-only state.

La razón por la que quería hacer esto es aplicar la misma animación a varios objetos. Una solución alternativa era construir la animación básica con código y luego la animación más compleja, como la función de aceleración, etc., la guardaba como un recurso. Déjame mostrarte lo que quiero decir.

En mi archivo de recursos coloqué el siguiente recurso:

   <EasingDoubleKeyFrame x:Key="pleaseWork">
        <EasingDoubleKeyFrame.EasingFunction >
            <BackEase EasingMode="EaseOut" Amplitude="1"/>
        </EasingDoubleKeyFrame.EasingFunction>
    </EasingDoubleKeyFrame>

En la mezcla de expresión, puede crear una función de facilidad más compleja. Luego, con el código detrás, crearé un guión gráfico básico:

DoubleAnimation animation = new DoubleAnimation();
            animation.To = 336;   // final value
            //animation.From = 0;
            //animation.BeginTime = TimeSpan.FromSeconds(0); 
            animation.Duration = new Duration(TimeSpan.FromSeconds(5)); // how much time should animation last
            // here comes the magic:
            // note that I can bind to EasingDoubleKeyFrame in my resource file in xaml
            animation.EasingFunction = ((EasingDoubleKeyFrame)FindResource("pleaseWork")).EasingFunction; // apply the easing function 
            Storyboard.SetTarget(animation, groupBox1);  // what object will be animated?
            Storyboard.SetTargetProperty(animation, new PropertyPath(FrameworkElement.HeightProperty)); // what property will be animated

            Storyboard sb = new Storyboard();
            sb.Children.Add(animation);
            sb.Begin();

Esto me permitió usar el mismo guión gráfico en varios objetos.