2011-11-06 32 views
1

我正在開發一個由單個窗口和許多動畫組成的WPF應用程序。這些動畫被分成六個如此不同的故事板,放置在該部分時可以正常工作。我的問題是,我想以某種方式將這些故事板放在別的地方,就像在他們自己的文件中一樣。這會產生更少的混亂代碼並使其可重用。我瞭解到故事板不能駐留在ResourceDirectory中,但是有其他方式可以拆分我不知道的故事板嗎?包裝故事板

回答

0

我們是否確定故事板不能位於ResourceDictionary中?我覺得自己已經做到了。 Also, this.

+0

我有一堆在ResourceDictionaries中定義的故事板,這些故事板通過MergedDictionaries包含在應用程序中,但我不知道如何在代碼隱藏中獲取Storyboard對象,而不會由於IllegalOperationException而崩潰。 – Dave

+0

他們完全沒有靜態設置的目標? – xanadont

+0

他們完全免費,這裏是一個例子:http://pastebin.com/p7uSDPYp。我通過做一些像uiStoryboardTile.Begin(myTarget)來調用這些方法;或者uiStoryboardTile.BeginTime = TimeSpan.FromSeconds(2); – Dave

0

您可以考慮創建一個封裝這些動畫的行爲。我通常的做法是,將我的故事板轉換爲C#代碼,然後將它們放入行爲中。

如果你想翻譯這些動畫到C#是有點工作,你也可以嘗試把你的XAML代碼到一個只讀的字符串,像這樣的,

internal static readonly string MyStoryboard = 
@"<Storyboard xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation""> 
    <DoubleAnimation Duration=""0"" To=""1"" Storyboard.TargetProperty=""(UIElement.Opacity)"" Storyboard.TargetName=""LayoutRoot"" /> 
</Storyboard>"; 

,然後只用XmlReader.Load加載它。像這樣的,

_storyboard = XamlReader.Load(Storyboards.MyStoryboard) as Storyboard; 

希望這會有所幫助。 :)