2

我在控制 Storyboard 类的实例时遇到问题。

它在资源中的 XAML 中定义:

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

我也试图让它停止,像这样:

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

但是,没有成功。如果我尝试在您的代码中调用实例 Storybord1,那么我会遇到错误,即当前上下文中没有这样的实例(而且,如果在 C# 代码中我尝试使用智能感知也没有成功,原因描述先前的问题)。

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

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

没有成功。

我没有做任何困难或使用超级封装的设计模式,我找不到/使用它。

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

我只想自己控制 Storyboard 的所有游戏。我什么时候可以停止并启动它。

在 Silverlight 中我没有遇到任何问题(因为 Storyboard1 可以在 Silverlight 中访问),但在 WPF 中,默认的所有故事板都是自动播放的,我无法控制它的实例。

我该如何解决?

谢谢!

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

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

http://ideone.com/Drc1SP - XAML

4

2 回答 2

1

实际上我确实可以访问您的情节提要,您的消息框确实会弹出情节提要名称。我假设您希望您的控制按钮在您在后面的代码中启动它时淡入。我删除了您必须启动 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();
}
于 2012-12-26T22:44:52.920 回答
0

那是因为您试图在 Window 构造函数中执行此操作。将您的代码移动到Loaded事件中。

于 2012-12-26T21:18:36.480 回答