2014-11-13 40 views
0

編輯:看起來,任何導致UI被更改的調用不會正確觸發。這包括故事板,改變文本值的東西等。從UserControl激活故事板

我有一個用戶控件,我創建了,名爲NewsArticle,用於填充新聞文章的頁面。這是正常運作。但是,當我嘗試將觸擊事件附加到usercontrol時,問題開始出現,它在後面的usercontrol代碼內創建了一個方法。

是,我需要解僱位於我MainPage.xaml中的代碼後面的代碼,我做了以下內容:

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

這樣做是火法「ScrapePage」與paramerer「LNK」這是一個字符串值。

該方法觸發,但它只執行一個messagebox,我已經設置顯示該方法實際上正在發射。

然而,這些線路不工作:

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

我試圖激活位於我的MainPage.xaml中的資源,而不是我的用戶故事板。包含上述代碼行的方法在MainPage.xaml中,但是從嵌入在MainPage.xaml上的UserControl中的NewsArticle.xaml中觸發。

爲了澄清,當從MainPage.xaml激活激活故事板的方法時,這些故事板可以正常工作。

+1

您正在使用New語句創建第二個MainPage,因此該代碼未在您的父表單上運行。嘗試設置UserControl的父屬性並使用它訪問您的父表單。 –

回答

1

與馬克·霍爾的評論幫助剛剛想通了。在這裏張貼的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,然後嘗試初始化動畫關閉它。完美的作品。