媒体播放时,uwp光标隐藏

时间:2018-01-08 13:39:10

标签: uwp cursor media nullreferenceexception uwp-xaml

我试图在媒体开始播放几秒钟后隐藏鼠标指针。到目前为止,我已经尝试了以下哪些应该完成这项工作,但遗憾地抛出了一个空引用异常。

Window.Current.CoreWindow.PointerCursor = null;  
  

项目最小目标:创建者更新

     

目标:秋季创作者更新。

     

用于媒体的控件:mediaplayerelement。

2 个答案:

答案 0 :(得分:1)

  

到目前为止,我已尝试过以下哪些应该执行此操作,但遗憾地抛出了空引用异常。

问题是你没有在UI线程中调用此方法。请尝试将PointerCursor设置为null,如下所示。

await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
{
    Windows.UI.Xaml.Window.Current.CoreWindow.PointerCursor = null;
});

答案 1 :(得分:0)

我向您建议我以前隐藏/取消隐藏鼠标光标的方式:

Window.Current.CoreWindow.PointerMoved += CoreWindow_PointerMoved;
Window.Current.CoreWindow.PointerCursor = null;
private async void CoreWindow_PointerMoved(Windows.UI.Core.CoreWindow sender, PointerEventArgs args)
{
    if (Window.Current.CoreWindow.PointerCursor == null)
        Window.Current.CoreWindow.PointerCursor = new CoreCursor(CoreCursorType.Arrow, 0);
    Stopwatch.Restart();
    await Task.Delay(1500);
    if (Stopwatch == null) return;
    if (Stopwatch.ElapsedMilliseconds >= 1500)
        Window.Current.CoreWindow.PointerCursor = null;
}

在这段代码中,我添加了一个全局的 StopWatch 属性

Stopwatch Stopwatch { get; set; } = new Stopwatch();

您应该在某个地方处理秒表并取消注册 OnNavigatedFrom 等事件

Window.Current.CoreWindow.PointerMoved -= CoreWindow_PointerMoved;
Stopwatch.Stop();
Stopwatch = null;
Window.Current.CoreWindow.PointerCursor = new CoreCursor(CoreCursorType.Arrow, 0);
AppCore.Instance.MediaPlayer.Pause();
Frame.GoBack();
NavigationManager.BackRequested -= NavigationManager_BackRequested;
NavigationManager.AppViewBackButtonVisibility = AppViewBackButtonVisibility.Collapsed;
NavigationManager = null;