代码之家  ›  专栏  ›  技术社区  ›  user4317723

来自其他页面的UWP访问MediaPlayerElement

  •  0
  • user4317723  · 技术社区  · 6 年前

    在我的主页上。xaml我有

    <Grid>
        <NavigationView x:Name="navView">
            <NavigationView.MenuItems>
                <NavigationViewItem x:Name="music" Content="My Music"/>
            </NavigationView.MenuItems>
    
            <Frame x:Name="myFrame">
                <Frame.ContentTransitions>
                    <TransitionCollection>
                        <NavigationThemeTransition/>
                    </TransitionCollection>
                </Frame.ContentTransitions>
            </Frame>
        </NavigationView>
    
        <Grid Grid.Row="1">
            <MediaPlayerElement x:Name="nowPlaying"
              AreTransportControlsEnabled="True" x:FieldModifier="public">
                <MediaPlayerElement.TransportControls>
                    ...
                </MediaPlayerElement.TransportControls>
            </MediaPlayerElement>
        </Grid>
    </Grid>
    

    我想播放其他页面(MyMusic)的音乐(传递Uri),但我找不到访问MediaPlayerElement的方法。另一个页面在myFrame中打开。我想保留运输控制。

    1 回复  |  直到 6 年前
        1
  •  0
  •   Maximus    6 年前

    您不应该依赖UI元素从其他页面播放媒体。相反,请使用MediaPlayer类:

    https://docs.microsoft.com/en-us/windows/uwp/audio-video-camera/play-audio-and-video-with-mediaplayer#use-mediaplayerelement-to-render-video-in-xaml

    因此,请指定您的MediaPlayerElement( 确保将AreTransportControlsEnabled值设置为所需的值 ):

    <MediaPlayerElement x:Name="_mediaPlayerElement" AreTransportControlsEnabled="False" HorizontalAlignment="Stretch"  Grid.Row="0"/>
    

    然后,您可以将元素链接到MediaPlayer对象,您可以在代码中引用该对象:

    _mediaPlayerElement.SetMediaPlayer(mediaPlayer);
    

    然后播放您需要的任何内容:

    _mediaPlayerElement.Source = MediaSource.CreateFromUri(new Uri("ms-appx:///Assets/example_video.mkv"));
    mediaPlayer = _mediaPlayerElement.MediaPlayer;
    mediaPlayer.Play();