2011-11-06 33 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; 

希望这会有所帮助。 :)