编辑:似乎任何导致UI被更改的调用都无法正常启动。这包括故事板,更改文本值的内容等
我有一个我创建的用户控件,名为NewsArticle,用于填充包含新闻文章的页面。这是正常运作的。但是,当我尝试将tap事件附加到usercontrol时会出现问题,这会在usercontrol的代码中创建一个方法。
由于我需要触发的代码位于我的MainPage.xaml代码后面,我做了以下内容:
MainPage mp = new MainPage();
mp.ScrapePage(lnk);
这样做是为了解决方法" ScrapePage"使用参数" lnk"这是一个字符串值。
该方法触发,但它只执行我设置的消息框,以显示该方法实际正在触发。
但是,这些行不起作用:
((Storyboard)Resources["Loading"]).Begin();
((Storyboard)Resources["Article_in"]).Begin();
我尝试激活的故事板位于我的MainPage.xaml资源中,而不是我的Usercontrol。包含上述行的方法在MainPage.xaml中,但是从MainArt.xaml中嵌入的用户控件NewsArticle.xaml中触发。
为了澄清,当激活故事板的方法是从MainPage.xaml触发时,这些故事板工作正常。
答案 0 :(得分:1)
在Mark Hall的评论的帮助下弄明白了。在此发布awnser以供将来参考:
StackPanel stp = VisualTreeHelper.GetParent(this) as StackPanel;
ScrollViewer sc = stp.Parent as ScrollViewer;
Grid gr = sc.Parent as Grid;
Grid gr2 = gr.Parent as Grid;
MainPage mp = gr2.Parent as MainPage;
((Storyboard)mp.Resources["Article_in"]).Begin();
基本上,只需沿着可视树向下工作到MainPage,然后尝试从中初始化动画。效果很好。
答案 1 :(得分:0)
为什么不试试这段代码而不是Storyboard
代码呢?
Storyboard show = (Storyboard)Resources["Loading"];
show.Begin();
这个可能会有所帮助!