我在控制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/Drc1SP - XAML
答案 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
事件。