Le MediaPlayerElement joue de l'audio après avoir navigué vers un autre cadre. Si je navigue à nouveau vers ce cadre, je peux entendre deux instances de l'audio, l'une provenant de l'audio de la vidéo en cours de lecture et l'autre de la dernière fois où j'ai navigué vers ce cadre. Comment puis-je arrêter le MediaPlayerElement après avoir navigué vers un autre cadre ?
Pour référence :
Code entier de ma partie XAML du cadre
<Page.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/Styles/MediaPlayerDictionary.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Page.Resources>
<Grid Background="Transparent">
<MediaPlayerElement Name="YoutubePlayer" MaxWidth="640" MaxHeight="360" AreTransportControlsEnabled="True">
<MediaPlayerElement.TransportControls>
<video:CustomMediaTransportControls x:Name="CustomMediaControl" IsSkipBackwardButtonVisible="True" IsSkipForwardButtonVisible="True" IsSkipBackwardEnabled="True" IsSkipForwardEnabled="True" IsFullWindowButtonVisible="True" IsFullWindowEnabled="True" QualityChanged="CustomMediaControl_QualityChangedAsync"/>
</MediaPlayerElement.TransportControls>
</MediaPlayerElement>
</Grid>
Code entier de ma partie C# du cadre
public sealed partial class VideosPage : Page
{
public VideosPage()
{
this.InitializeComponent();
}
protected override void OnNavigatingFrom(NavigatingCancelEventArgs e)
{
base.OnNavigatingFrom(e);
YoutubePlayer.MediaPlayer.Dispose();
}
public async Task setVideoSourceAsync(YouTubeQuality videoQuality)
{
try
{
var youtubeUrl = await YouTube.GetVideoUriAsync("QTYVJhy04rs", YouTubeQuality.Quality144P, videoQuality);
YoutubePlayer.Source = MediaSource.CreateFromUri(youtubeUrl.Uri);
YoutubePlayer.AutoPlay = true;
}
catch (Exception e)
{
//await setVideoSourceAsync();
}
}
private async void Page_LoadedAsync(object sender, RoutedEventArgs e)
{
if (ApplicationView.GetForCurrentView().IsViewModeSupported(ApplicationViewMode.CompactOverlay))
{
CustomMediaControl.IsCompactOverlayButtonVisible = true;
}
await setVideoSourceAsync(YouTubeQuality.Quality360P);
}
private async void CustomMediaControl_QualityChangedAsync(object sender, QualityChangedEventArgs e)
{
await setVideoSourceAsync(e.NewQuality);
}
}