2017-03-09 3 views
0

私はこのようにWindowを示しています。アクセス

MainWindow mainWindow = new MainWindow(); 
mainWindow.Show(); 

私は、独自のフレームにPageをロードするよりも:

mainWindow.frame.NavigationService.Navigate(new Uri("PageWelcome.xaml", UriKind.Relative)); 

PageWelcomeは、いくつかの公共が含まれています

public void Play() 
{ 
    mediaElement.Play(); 
} 

ここから上のクラスでは、Playメソッドに電話したいと思います。 これを行う正しい方法は何ですか? フレームの現在のコンテンツを取得する必要がありますか?

PageWelcome page = mainWindow.frame.Content as PageWelcome; 
if(page != null) 
    page.Play(); 

それとも、ただ、Pageのインスタンスを作成し、あなたのクラスのフィールドにへの参照を保持して設定できます

+0

このソリューションに問題がありますか? '((PageWelcome)mainWindow.frame.Content).Play();' – Mark

答えて

1

あなたはPageWelcomeFrameContentプロパティを唱えられるのいずれかFrameさんContentプロパティ:

private WelcomePage page = new WelcomePage(); 
public void SomeMethod() 
{ 
    MainWindow mainWindow = new MainWindow(); 
    mainWindow.frame.Content = page; 
    mainWindow.Show(); 
} 

private void SomeOtherMethod() 
{ 
    page.Play(); 
} 

あなたはキャストする必要はありません後者のアプローチを使用します。