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

У меня есть видео для воспроизведения в приложении Windows Store 8.1, и я хочу, чтобы звук воспроизводился после перехода на другую страницу. Я сделал это с помощью visualTreeHelper, поэтому я объявляю медиа-элемент в app.xaml и добавляю его в фрейм в app.xaml.cs , и получить его в playPage . Проблема в том, что элемент управления медиа-элементом воспроизводит только звук, и я не вижу видео... звук продолжает воспроизводиться после навигации, но не может видеть видео на воспроизводимой странице (только звук): вот что я вставил стандартные стили.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;      

в playPage.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;
`

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


person Malek Farhi    schedule 28.01.2016    source источник


Ответы (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

person Aman Chaudhary    schedule 28.01.2016