2013-12-19 2 views
3

Чтобы динамически разместить контент на странице в проекте Windows Phone 8, мы используем всплывающее окно с сеткой для размещения содержимого.Взаимодействие LongListSelector прерывается, когда всплывающее окно открыто в WP8

Когда эта страница содержит элемент управления LongListSelector, взаимодействие Tap для остановки прокрутки больше не работает. Прокрутка вверх и вниз работает так, как ожидалось.

Проблема может быть воспроизведена очень легко, начиная с нового DataBound приложения и добавить этот кусок кода в конструкторе страницы:

private Popup p; 

p = new Popup(); 
Grid grid = new Grid(); 
grid.Width = Application.Current.Host.Content.ActualWidth; 
grid.Height = Application.Current.Host.Content.ActualHeight; 
p.Child = grid; 
p.IsOpen = true; 

Используя этот код вы можете сделать LongListSelector прокрутки, но Tap делает нет чтобы остановить прокрутку.

Кто-нибудь видел эту проблему и нашел решение, или это может быть известная проблема с LongListSelector?

ответ

0

Невидимый Grid, который вы кладете поверх LongListSelector (на самом деле на всей странице), захватывает событие нажатия и, поскольку всплывающее окно не является частью визуального дерева, событие не пузырится, как вы ожидаете.

Аномалия здесь заключается в том, что вы можете фактически взаимодействовать с LLS вообще.

Реальный вопрос здесь не почему это происходит, но почему вы это сделаете? Очевидно, что ваше воспроизведение очень просто, но это не имеет смысла.

Что вы в конечном итоге пытаетесь достичь?
Есть почти наверняка более подходящие альтернативные способы достижения конечной цели.

+0

Всплывающее окно используется для того, чтобы делать свет в том же порядке, что и в Windows Runtime. Всплывающее окно содержит некоторый контент, который может быть добавлен в расширенное состояние. Если он расширяется, кран за пределами содержимого должен закрывать расширенный контент. Я считаю, что невидимая Сетка не должна мешать взаимодействию вообще, потому что она не обрабатывает события взаимодействия по умолчанию. – JLaanstra

+0

@JLaanstra Я все еще не понимаю, зачем вам это нужно в Popup. Обратите внимание, что WinRT UIFramework отличается от Silverlight (который использует WinPhone) и будет делать что-то по-другому. Кроме того, заимствование пользовательских метафоров и поведения с одной платформы и применение их к другой не всегда является хорошей идеей. К сожалению, ваше смутное описание того, что вы пытаетесь достичь, не помогло сделать его более ясным конечной целью того, чего вы пытаетесь достичь. –

+0

Я пытаюсь обнаружить сенсорные взаимодействия вне элемента управления во всплывающем окне. Я не могу сделать это более ясным, чем это. Пока я пытался это сделать, я столкнулся с вышеупомянутой проблемой, которая кажется мне ошибкой. Поведение, которое я ищу, похоже на popup.IsLightDismissEnabled в Windows 8. Я не думаю, что заимствование этого поведения пользовательского интерфейса вызывает проблемы на телефоне. – JLaanstra

Смежные вопросы