2011-03-14 32 views
10

den Hedef Adı Set Ben kaynaklaraStoryboard - kod arkasında

<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> 

Ve gelecek kodu

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; 
} 

var Ve bu, gayet iyi çalışıyor Ama taşımak istediğiniz WindowClosing üzerine Storyboard Bu storyboard başka bir meclise. Bu yüzden StoryBoard.TargetName form kodunu belirtmem gerekiyor. Bunu nasıl yapabilirim? "Set" + PropertyName

bakınız C# Örnek here:

Storyboard.SetTargetName(yourAnimation, "NotifyWindow"); 

cevap

16

Ekli özellikleri adlı statik yardımcı yöntemlerle kodundan ayarlanabilir : sizin örnekte

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

:

Çaba için
fading.SetValue(Storyboard.TargetNameProperty, "NotifyWindow"); 
7

nesneleri bağımlılık bağımlılık özelliklerini ayarlamak için, standart bir şekilde bağlı özellikler için aynı

+0

+1 – Stecya