2016-07-24 3 views
0

私のアプリでは、フレーム、ページ1とページ2を持つ1つのマスターページがあります。アプリケーションが起動すると、マスターページはフレーム内のpage1で読み込まれます。その時、私はmasterpageの次のコードを使ってpage1のコントロール(TextBox、GridView)を見つけることができました。フレーム内のコントロールを見つける方法は?

private void Page_Loaded(object sender, RoutedEventArgs e) 
{ 
    Frame rootFrame = Window.Current.Content as Frame; 
    Page mainPage = rootFrame.Content as MasterPage; 
    Frame myframe = mainPage.FindName("frameBody") as Frame;   
    Page page1 = frame.Content as Page1; 
    Page page2 = frame.Content as Page2; 
    Button btnpage = page1.FindName("btnPage2") as Button; 
} 

私はpage2をナビゲートするか、私は同じコードを使用してPAGE2のコントロール(テキストボックス、GridViewコントロール)を見つけることができませんよその時のフレームでpage2をロードします。

+0

をチェックアウトし、ページ間のデータを永続化する方法をされるためには、あなたはvisualtreehelper見てきました? – JTIM

+0

うーん.. page1でbtnPage2を探しています.... – Alamakanambra

答えて

1

Frame.Navigate(newPage)を実行すると、古いコンテンツへの参照がすべて解放され、ガベージコレクションが行われます。データを永続化する場合は、データをキャッシュする必要があります。コントロールを維持する必要がある場合は、おそらくアーキテクチャを再考する必要があります。

あなたの質問に対する答えは、コントロールが表示されない理由は、もはやビジュアルツリーに存在しないためです。それらは除去され、ガベージコレクションされます。これを回避する方法は、キャッシュすることです。

参考情報:

MSDN Frame Documentation

Reference Source - Frame.cs

とあなたの次の質問は

MSDN Frame.Navigate(Type,Object) Documentation

関連する問題