Хобрук: Ваш путь к мастерству в программировании

Обнаружить отсутствие навигации в Windows 8 Metro

Я разрабатываю свое первое приложение для Windows 8. Мне нужно определить, прекратил ли пользователь навигацию через 3 минуты, и перенаправить на домашнюю страницу.

У вас есть идеи, как это сделать (я использую XAML в этом приложении)??

С наилучшими пожеланиями


  • как вы это кодируете? с помощью MVVM или с выделенным кодом? Не могли бы вы предоставить пример кода, как вы перемещаетесь? 05.10.2012

Ответы:


1
  • Запустите таймер в вашей функции OnNavigatedTo.
  • Сбросьте таймер в функции OnNavigatedFrom.
  • Когда таймер истечет, вернитесь назад

Вы можете использовать DispatcherTimer:

    DispatcherTimer timer = new DispatcherTimer();
    timer.Interval = TimeSpan.FromMinutes(3);
    timer.Tick += (s,e) => GoBack();
    timer.Start(); 
05.10.2012

2

Есть два способа.

Во-первых, используйте реактивные расширения.

private static void Main()
{
    Console.WriteLine(DateTime.Now);

    // create a single event in 10 seconds time
    var observable = Observable.Timer(TimeSpan.FromSeconds(10)).Timestamp();

    // raise exception if no event received within 9 seconds
    var observableWithTimeout = Observable.Timeout(observable, TimeSpan.FromSeconds(9));

    using (observableWithTimeout.Subscribe(
        x => Console.WriteLine("{0}: {1}", x.Value, x.Timestamp), 
        ex => Console.WriteLine("{0} {1}", ex.Message, DateTime.Now)))
    {
        Console.WriteLine("Press any key to unsubscribe");
        Console.ReadKey();
    }

    Console.WriteLine("Press any key to exit");
    Console.ReadKey();
}

Второй способ — создать таймер, который сравнивает текущую дату с датой, когда вы записали последнюю активность навигации. Это гораздо менее эффективно, чем RX, но вы можете предпочесть его. Я бы поместил таймер в App.XAML.cs, чтобы он обрабатывался для вас глобально. Так проще.

var _Timer = new DispatcherTimer { Interval = TimeSpan.FromSeconds(1) };
_Timer.Tick += (s, args) =>
{
    if (m_LastNavigationDate.Add(TimeSpan.FromMinutes(3)) < DateTime.Now)
        RaiseTimeout();
};
_Timer.Start();

Либо будет работать

05.10.2012
Новые материалы

Создание кнопочного меню с использованием HTML, CSS и JavaScript
Вы будете создавать кнопочное меню, которое имеет состояние наведения, а также позволяет вам выбирать кнопку при нажатии на нее. Финальный проект можно увидеть в этом Codepen . Шаг 1..

Внедрите OAuth в свои веб-приложения для повышения безопасности
OAuth — это широко распространенный стандарт авторизации, который позволяет приложениям получать доступ к ресурсам от имени пользователя, не раскрывая его пароль. Это позволяет пользователям..

Классы в JavaScript
class является образцом java Script Object. Конструкция «class» позволяет определять классы на основе прототипов с чистым, красивым синтаксисом. // define class Human class Human {..

Как свинг-трейдеры могут использовать ИИ для больших выигрышей
По мере того как все больше и больше профессиональных трейдеров и активных розничных трейдеров узнают о возможностях, которые предоставляет искусственный интеллект и машинное обучение для улучшения..

Как построить любой стол
Я разработчик программного обеспечения. Я люблю делать вещи и всегда любил. Для меня программирование всегда было способом создавать вещи, используя только компьютер и мое воображение...

Обзор: Машинное обучение: классификация
Только что закончил третий курс курса 4 часть специализации по машинному обучению . Как и второй курс, он был посвящен низкоуровневой работе алгоритмов машинного обучения. Что касается..

Разработка расширений Qlik Sense с qExt
Использование современных инструментов веб-разработки для разработки крутых расширений Вы когда-нибудь хотели кнопку для установки переменной в приложении Qlik Sense? Когда-нибудь просили..