2017-03-09 6 views
0

In meinem Projekt habe ich eine Window auf diese Weise zeigen:Zugriff auf Seite Funktionen von einer externen Klasse

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

als ich einen Page in einem eigenen Rahmen laden:

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

PageWelcome enthält einige öffentliche Funktionen wie folgt aus:

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

nun von der Anfangsklasse oben, möchte ich die Play Methode aufrufen. Was ist der richtige Ansatz dafür? Ich muss den aktuellen Inhalt des Frames abrufen?

+0

Alles falsch mit dieser Lösung? '((PageWelcome) mainWindow.frame.Content) .Play();' – Mark

Antwort

1

Sie könnten entweder werfen die Content Eigenschaft des Frame zu einem PageWelcome:

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

Oder Sie könnten nur eine Instanz des Page, halten, um es in einem Feld Ihrer Klasse einen Verweis erstellen und die Frame ‚s Content Eigenschaft:

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

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

den zweiten Ansatz verwenden Sie nicht werfen müssen.

Verwandte Themen