2011-03-14 71 views
10

設置目標名稱我有故事板資源故事板 - 從代碼隱藏

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

而上的windowClosing我有一個代碼

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

而且這工作得很好,但我想移動這個故事板到另一個程序集。所以我需要指定StoryBoard.TargetName表單代碼。我怎樣才能做到這一點? "Set" + PropertyName

見C#示例here

Storyboard.SetTargetName(yourAnimation, "NotifyWindow"); 

回答

16

附加屬性可以從代碼通過命名靜態輔助方法設定:

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

在您的例子:

fading.SetValue(Storyboard.TargetNameProperty, "NotifyWindow"); 
7

的標準方式來設置依賴屬性進行依賴對象是用於附加屬性相同

+0

+1努力:) – Stecya 2012-03-08 09:15:51