从UserControl激活故事板

时间:2014-11-13 23:37:18

标签: c# xaml windows-phone-8 user-controls windows-phone

编辑:似乎任何导致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触发时,这些故事板工作正常。

2 个答案:

答案 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();

这个可能会有所帮助!

Animate UserControl Elements from Outside