在UWP应用程序中返回主屏幕的最佳方法

时间:2017-11-27 17:53:58

标签: c# uwp windows-10-universal

我正在开发一个基于UWP的自助服务终端应用,我希望每个视图在x时间过后返回主页。实现这一目标的最佳方法是什么?我正在考虑让每个页面启动一个不活动计数器,一旦计数器运行回家。思考?

1 个答案:

答案 0 :(得分:1)

  

我正在考虑让每个页面启动一个不活动计数器,一旦计数器运行回家

我认为这是正确的做法。

使用DispatcherTimer作为计数器。

要检查不活动状态,您可以在应用的Window.Current.CoreWindow

中检测各种事件的全局输入

使用Window.Current.CoreWindow.PointerPressedPointerMovedPointerReleased进行触摸和鼠标输入。

键盘输入:KeyUpKeyDown(软键)和CharacterReceived(适用于通过和弦和文字建议生成的字符)。

DispatcherTimer dispatcherTimer;

public NewPage()
{
    dispatcherTimer = new DispatcherTimer();
    dispatcherTimer.Tick += dispatcherTimer_Tick;
    dispatcherTimer.Interval = new TimeSpan(0, 0, 10);
    dispatcherTimer.Start();
    CheckIdle();
}

public void dispatcherTimer_Tick(object sender, object e)
{
    dispatcherTimer.Tick -= dispatcherTimer_Tick;
    dispatcherTimer.Stop();
    Frame.Navigate(typeof(MainPage));
}

private void CheckIdle()
{
    //Calling DispatcherTimer.Start() will reset the timer interval
    Window.Current.CoreWindow.PointerMoved += (s, e) => dispatcherTimer.Start();
    Window.Current.CoreWindow.PointerPressed += (s, e) => dispatcherTimer.Start();
    Window.Current.CoreWindow.PointerReleased += (s, e) => dispatcherTimer.Start();
    Window.Current.CoreWindow.PointerWheelChanged += (s, e) => dispatcherTimer.Start();
    Window.Current.CoreWindow.KeyDown += (s, e) => dispatcherTimer.Start();
    Window.Current.CoreWindow.KeyUp += (s, e) => dispatcherTimer.Start();
    Window.Current.CoreWindow.CharacterReceived += (s, e) => dispatcherTimer.Start();
}