2011-03-14 11 views
10

tengo StoryBoard en recursosStoryBoard - Establecer Nombre de destino a partir de código subyacente

<Window.Resources> 
    <Storyboard x:Key="Fading" Storyboard.TargetName="NotifyWindow" Storyboard.TargetProperty="Opacity" > 
     <DoubleAnimation From="1" To="0" Duration="0:0:1"> 
     </DoubleAnimation> 
    </Storyboard> 
    </Window.Resources> 

Y en WindowClosing Tengo siguiente código

private void NotifyWindow_Closing(object sender, System.ComponentModel.CancelEventArgs e) 
{ 
    Storyboard fading = this.Resources["Fading"] as Storyboard; 
    if (fading != null && !fadingCompleted) 
    { 
     fading.Completed += FadingStoryBoard_Completed; 
     fading.Begin(); 
     e.Cancel = true; 
    } 
} 

private void FadingStoryBoard_Completed(object sender, EventArgs e) 
{ 
    fadingCompleted = true; 
    Close(); 
    fadingCompleted = false; 
} 

Y esto funciona bien, pero quiero mover este guión gráfico a otra asamblea. Entonces necesito especificar el código de formulario StoryBoard.TargetName. ¿Cómo puedo hacer eso?

Respuesta

16

propiedades adjuntas se pueden establecer a partir de código a través de métodos estáticos helper con nombre: "Set" + PropertyName

Ver ejemplo de C# here:

Storyboard.SetTargetName(yourAnimation, "NotifyWindow"); 
7

La manera estándar para establecer las propiedades de dependencia a la dependencia de los objetos es la misma para las propiedades asociadas :

dependencyObjectInstance.SetValue(SampleClass.PropertyName + "Property", value); 

En su ejemplo:

fading.SetValue(Storyboard.TargetNameProperty, "NotifyWindow"); 
+0

+1 por el esfuerzo :) – Stecya

Cuestiones relacionadas