从用户控件激活情节提要

本文关键字:激活 用户 控件 | 更新日期: 2023-09-27 18:30:16

>EDIT:似乎任何导致UI被更改的调用都不会正确触发。这包括故事板、更改文本值的内容等。

我创建了一个用户控件,称为 NewsArticle,用于用新闻文章填充页面。这运行正常。但是,当我尝试将 tap 事件附加到用户控件时,问题开始出现,这会在用户控件的代码隐藏中创建一个方法。

由于我需要触发的代码位于我的 MainPage.xaml 代码后面,我做了以下操作:

MainPage mp = new MainPage();
mp.ScrapePage(lnk);

这样做是使用参数"lnk"触发方法"ScrapePage",这是一个字符串值。

该方法触发,但它仅执行我设置的消息框,以显示该方法实际上正在触发。

但是,这些行不起作用:

((Storyboard)Resources["Loading"]).Begin();
((Storyboard)Resources["Article_in"]).Begin();

我尝试激活的故事板位于我的 MainPage.xaml 资源中,而不是我的用户控件中。包含上述行的方法位于 MainPage.xaml 中,但从 NewsArticle.xaml 触发,NewsArticle.xaml 是嵌入在 MainPage.xaml 上的用户控件。

澄清一下,当激活情节提要的方法从 MainPage.xaml 触发时,这些情节提要工作正常。

从用户控件激活情节提要

刚刚在马克霍尔的评论的帮助下弄清楚了。在此处发布遮阳篷以供将来参考:

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

基本上,只需沿着可视化树向下移动到主页,然后尝试初始化动画。完美工作。

你为什么不试试这段代码而不是你的Storyboard代码呢?

Storyboard show = (Storyboard)Resources["Loading"];
show.Begin();

这个可能会有所帮助!

从外部对用户控件元素进行动画处理