Есть ли способ получить функцию прокрутки в приложениях метро Windows 8? - PullRequest
2 голосов
/ 06 марта 2012

В Windows 8 Consumer Preview при перемещении мыши к левому или правому краю на начальном экране содержимое прокручивается.

Стандартные элементы управления (и выпущенные в настоящее время приложения для предварительного просмотра), похоже, не поддерживаютthis.

Есть ли способ заставить это работать?

Ответы [ 2 ]

2 голосов
/ 29 июля 2012

Я задал этот вопрос в TechEd North America в этом году после одной из сессий, проведенных Полом Гусморино , ведущим руководителем программы для платформы пользовательского интерфейса.

Он ответил, что нетприложения не могут выполнять прокрутку нажатием против края.Приложения WinJS и WinRT / XAML даже не получают события, которые вам понадобятся для его реализации самостоятельно.Приложения получают события на уровне указателя мыши , , и когда указатель мыши достигает края экрана, он не может двигаться дальше, и вы больше не получаете событий.(Ну, это может немного покачиваться вверх и вниз, но не в том случае, если оно достигнет угла. Во всяком случае, недостаточно прокручивать, как это делает экран «Пуск».)

Он упомянул это, есливы писали приложение на C ++ / DirectX, вы могли бы получить необработанный ввод мыши, необходимый для этого самостоятельно - вы можете получить низкоуровневое «устройство, перемещаемое DX, DY», а не указатель высокого уровня, перемещенныйк X, Y ".Я предполагаю, что это так, как это делает экран «Пуск», хотя я и не думал спрашивать.

Но нет, он не встроенный, это не то, что вы можете реализовать самостоятельно (если вы не пишете свое приложениев низкоуровневом C ++ / DirectX), и похоже, что они не планируют добавлять его до того, как выйдет Windows 8.

Лично я думаю, что они довольно близоруки из-за того, что приложения чувствуют себя изуродованными по сравнению сСтартовый экран, но, очевидно, их не волнуют такие мелочи, как удобство использования.</rant>

2 голосов
/ 22 марта 2012

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

using Windows.Devices.Input;

var mouse = MouseDevice.GetForCurrentView();
mouse.MouseMoved += mouse_MouseMoved;

private void mouse_MouseMoved(MouseDevice sender, MouseEventArgs args)
{
    tb.Text = args.MouseDelta.X.ToString();
}
...