Я запускаю короткое видео в своем приложении UWP, в то время как ряд других задач выполняется в фоновом режиме.Если пользователь не хочет смотреть видео, для него есть кнопка «Пропустить видео».Однако кнопка не становится активной в течение 30 секунд в видео.
Я подумал, что, возможно, это были мои фоновые задачи, блокирующие пользовательский интерфейс, но они выполняются через 5-7 секунд.Я также подумал, что, возможно, проблема была в загрузке видео, но она длилась всего 3 минуты, поэтому я не думаю, что это займет так много времени для буферизации.
Вот XAML, который я используюдля страницы:
<Page
x:Class="Cgs.Ux.Views.MainMenu"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:Cgs.Ux"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:userControls="using:Cgs.Ux.UserControls"
xmlns:help="using:Cgs.Ux.UserControls.Help"
mc:Ignorable="d"
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<RelativePanel RequestedTheme="Light">
<Image Source="{x:Bind Vm.PlainBackgroundImage, Mode=OneWay, Converter={StaticResource ImageConverter}}"
Stretch="Fill"/>
<Viewbox RelativePanel.AlignBottomWithPanel="True" RelativePanel.AlignTopWithPanel="True"
RelativePanel.AlignLeftWithPanel="True" RelativePanel.AlignRightWithPanel="True">
<Grid>
<Image Source="{x:Bind Vm.BackgroundImage, Mode=OneWay, Converter={StaticResource ImageConverter}}"
RelativePanel.AlignVerticalCenterWithPanel="True" RelativePanel.AlignHorizontalCenterWithPanel="True"
Height="1080" Width="1920" Opacity=".5"/>
<!--Media Player-->
<MediaPlayerElement
Name="MediaSimple"
Source="ms-appx:///Assets/Videos/Transfer Items Alpha 2.mp4"
Width="1920" Height="1080" AutoPlay="False" Visibility="Collapsed">
</MediaPlayerElement>
<Button
Name="SkipVideo"
VerticalAlignment="Bottom" HorizontalAlignment="Right" Margin="30"
Content="Skip Video" Height="100" Width="400" Background="White"
Visibility="{x:Bind Vm.SkipVideoVisible, Mode=OneWay}"
PointerEntered="OnPointerEntered"
Click="{x:Bind Vm.SkipVideo}"/>
</Grid>
</Viewbox>
<ProgressRing
RelativePanel.AlignHorizontalCenterWithPanel="True" RelativePanel.AlignVerticalCenterWithPanel="True"
Width="100" Height="100" Foreground="NavajoWhite" IsActive="{x:Bind Vm.IsBusy, Mode=OneWay}" />
</RelativePanel>
</Page>
Вот соответствующий код:
public void PlayMedia()
{
MediaSimple.MediaPlayer.Play();
MediaSimple.Visibility = Visibility.Visible;
}
public void SkipVideo()
{
View.StopVideo();
_introVideoFinished = true;
if (_soloGameLoaded && _introVideoFinished) GotoGame();
}
private void OnPointerEntered(object sender, PointerRoutedEventArgs e)
{
Debug.WriteLine("Pointer Entered");
}
Я ожидаю, что кнопка должна быть доступна немедленно или почти сразу.