Элемент мультимедиа из визуального дерева не отображает видео, только звук в приложении 8.1 store

У меня есть видео для воспроизведения в приложении Windows Store Store, и я хочу сохранить воспроизведение звука после перехода на другую страницу. Я сделал это с помощью visualTreeHelper, поэтому я объявил медиа-элемент в app.xaml и добавил его в кадр в app.xaml.cs. и получить его в игровой странице. Проблема в том, что элемент управления мультимедиа воспроизводит только аудио, и я не вижу видео... аудио продолжает воспроизводиться после навигации, но не может видеть видео на странице воспроизведения (только аудио): так вот, что я вставил в standardstyles.xaml:

<Style x:Key="RootFrameStyle" TargetType="Frame">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="Frame">

                <Grid>
<MediaElement x:Name="player" AudioCategory="BackgroundCapableMedia"   />
 <Grid>
                   <ContentPresenter />
                    </Grid>
                </Grid>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

и это в app.xaml.cs

rootFrame.Style = Resources["RootFrameStyle"] as Style;      

в PlayingPage.xaml я добавляю элемент управления MediaElement:

<ContentControl x:Name="videoContainer" HorizontalAlignment="Stretch" VerticalAlignment="Center" 
                            Grid.Row="0" Grid.Column="1"
                        KeyUp="VideoContainer_KeyUp"    >
                <MediaElement x:Name="player" AudioCategory="BackgroundCapableMedia"  
                    Visibility="Visible" Grid.Row="0" Grid.Column="1" AutoPlay="True" 
                    HorizontalAlignment="Center" VerticalAlignment="Center" 
                    MediaOpened="player_Opened" 
                    MediaEnded="player_Ended" 
                    MediaFailed="player_Failed" 
                              Position="10"
                    CurrentStateChanged="player_CurrentStateChanged"  />

                </ContentControl>

и в его коде:

 DependencyObject rootGrid = VisualTreeHelper.GetChild(Window.Current.Content, 0);
     player = (MediaElement)VisualTreeHelper.GetChild(rootGrid, 0) as MediaElement;

 player.Source = video.VideoLink;
`

все работает хорошо, когда я не пытаюсь заставить звук работать после навигации, поэтому, когда я не использую визуальный помощник по дереву, но в этой ситуации аудио работает как положено, но не может видеть видео на странице воспроизведения (только аудио)

1 ответ

Вместо навигации по всей странице вы можете просто перемещаться по фрейму на вашей странице. Таким образом, ваш медиа-элемент будет доступен на всех страницах.

 <Grid>
        <Grid.RowDefinitions>
            <RowDefinition/>
            <RowDefinition/>
        </Grid.RowDefinitions>
        <MediaElement Grid.Row="0"/>
        <Frame x:Name="displayedFrame" Grid.Row="1"></Frame>
    </Grid>

И всякий раз, когда вам нужно перемещаться вместо использования this.Frame.Navigate, используйте displayFrame.Navigate

Другие вопросы по тегам