2013-07-21 11 views
5

ho qualche pagina di controllo utente, e un MainWindow, quindi vorrei impostare pagina di controllo all'utente di nascosto, e una volta che la sua nascosta, si ferma la sua riproduzione dell'audioWPF C IsVisibleChanged evento

so devo fare qualcosa con l'evento IsVisibleChanged ma sono rimasto bloccato su come avviarlo?

È qualcosa del genere?

(pagename).IsVisibleChanged(object sender , RoutedEventArgs e) 
{ ap.Stop() } 

Perché la mia pagina di controllo utente (i visualizzazione all'interno del MainWindow utilizzando un controllo personalizzato) è nel mio MainWindow e la pagina di controllo utente avere un po 'di riprodurre file audio, quando scatto il tasto home che risiede sul MainWindow, imposterò la pagina di controllo utente in hidden e mostrerò la mia home page, ma ora quando è nascosta, l'audio di quella pagina è ancora in riproduzione, quindi sono andato a chiedere e alcuni hanno detto di usare l'evento IsVisibleChanged nella pagina di controllo utente (il 1 che suona l'audio) ma sono rimasto bloccato su come lo scrivo anche perché sono nuovo per questo.

risposta

11

Prima soluzione:

si dovrebbe usare DependencyPropertyChangedEventArgs come secondo argomento e si dovrebbe verificare NewValue proprietà che indica se la pagina sarà visibile o meno (msdn).

Esempio:

void (pagename)_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e) 
{ 
    if (!((bool)e.NewValue)) 
    { 
     ap.Stop(); 
    } 
} 

Here a trovare la soluzione del campione (IsVisibleChangedExample).

Seconda soluzione:

Se si utilizza MediaElement (msdn) per riprodurre la musica, è necessario utilizzare due proprietà: LoadedBehavior (msdn) e UnloadedBehavior (msdn).

Esempio:

<MediaElement Name="me" Source="path to your music file" 
       LoadedBehavior="Play" UnloadedBehavior="Stop" Volume="100" /> 
+0

Ciao, grazie per la risposta e il vostro tempo. Sono nuovo alla programmazione e al WPF C#, tipo per elaborare di più? Non capisco davvero cosa intenda dire, ma diciamo che se la pagina di controllo utente si trova in un altro controllo personalizzato nella finestra principale, ma ho impostato solo il controllo personalizzato su nascosto, rileverà anche se la pagina di controllo dell'utente è nascosta o solo rilevare quel particolare controllo che ho impostato su nascosto. È perché ho impostato il controllo personalizzato su nascosto ma quella pagina di controllo utente è al suo interno. Scusa per il mio povero inglese, spero tu capisca :) – what

+0

E dove dovrei usare il tuo codice sopra? nella pagina di controllo utente? Grazie per aver chiarito i miei dubbi e perdonarmi per le domande bombardate, davvero dispiaciuto. – what

+0

@ user2601570 controlla di nuovo la mia risposta :) – kmatyaszek