WPF Storyboard无法控制此类的新实例,与Silverlight应用程序混淆

时间:2012-12-26 13:21:18

标签: wpf silverlight xaml storyboard controls

我在控制Storyboard类的实例方面遇到了问题。

它在资源中的XAML中定义:

<Window.Resources>
    <Storyboard x:Name="Storyboard1" x:Key="Storyboard1">

我也试图让它停下来,就像这样:

        Storyboard sb = (Storyboard)this.TryFindResource("Storyboard1");
        sb.Seek(TimeSpan.Zero);

但是,没有成功。如果我试图将你的代码调用到实例Storybord1那么我就得到了错误,在当前上下文中没有这样的实例(而且,如果在C#代码中我尝试用intellisense看也没有成功,原因是描述过去的问题)。

当我试图找到这个实例时:

        foreach (var item in this.Resources)
        {
            MessageBox.Show(item.ToString());
        }

没有成功。

我没有做难度或使用超级封装的设计模式,我无法找到/使​​用它。

只需添加一个UI元素和一个改变不透明度的Storyboard。

我想要自己控制所有Storyboard的游戏。当我可以阻止并启动它时。

在Silverlight中我没有遇到任何麻烦(因为故事板1可以在Silverlight中访问),但在WPF中,所有故事板都是自动播放,我无法控制其实例。

我该如何解决?

谢谢!

PS 如果这可以帮助您为我提出一些建议,请查看:

http://ideone.com/O0x93O - C#

http://ideone.com/Drc1SP - XAML

2 个答案:

答案 0 :(得分:1)

实际上我可以访问您的故事板,您的Messagebox会弹出故事板名称。我假设您希望控制按钮在您的代码后面启动时淡入。我删除了你必须启动Storyboard的Windows.Trigger,然后你的控件正常显示,然后我将它们的不透明度设置为0并使Storyboard Instance成为类级变量。

int count = 0;
Storyboard _sb;
public MainWindow()
{
    InitializeComponent();

    var sb = this.TryFindResource("Storyboard1");
     _sb = sb as Storyboard;
}

然后使用您想要用来触发它的任何事件/条件(在这种情况下我使用了Windows加载事件

private void Window_Loaded(object sender, RoutedEventArgs e)
{
    _sb.Begin();
}

答案 1 :(得分:0)

那是因为你试图在Window Constructor中这样做。请将代码移至Loaded事件。