Запретить навигацию Pivot в Windows Phone - PullRequest
4 голосов
/ 05 августа 2011

У меня есть приложение для записи звука для Windows Phone.Он состоит из элемента управления с двумя опорами.Один предназначен для управления записью, а другой - для просмотра и прослушивания записанных элементов.

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

Я знаю, что мог бы использовать GestureListener из Silverlight Toolkit, но с его помощью мне нужно будет реализоватьмоделирование движения шарнирного себя.

Существует ли встроенный способ предотвращения навигации по центру?

Если нет, можете ли вы привести пример того, как я могу анимировать управление движением при перелистывании жестов?

Ответы [ 3 ]

5 голосов
/ 05 августа 2011

Обязательно ли, чтобы пользователь оставался на одном PivotItem?.Если нет, то вы можете просто отключить второй PivotItem, чтобы пользователь знал, что он есть, но не мог фактически взаимодействовать с ним.

secondPivotItem.IsEnabled = false;

В качестве альтернативы, вы можете динамически вставить второй PivotItem, когда захотите.и удалите его, когда вы этого не сделаете.Например, при записи:

mainPivot.Items.Remove(secondPivotItem);

затем, когда вы хотите, чтобы появился второй PivotItem:

mainPivot.Items.Add(secondPivotItem);

Единственная «проблема» с этим заключается в том, что когда у вас включен только один PivotItemэкран, пользователь не может прокрутить.Однако именно так должен работать элемент управления Pivot.

Если вы действительно хотите, чтобы пользователь прокрутил назад себя, вы можете создать пустой PivotItem (без заголовка).Затем обработайте событие Pivot LoadingPivotItem.Проверьте, является ли элемент, который он собирается загрузить, пустым.Если это так, используйте Pivot.SelectedItem = recordingPivotItem, чтобы вернуться к записи PivotItem.Затем вы можете использовать описанный выше метод для динамического добавления второго PivotItem после завершения записи.Это не обычный UX для пивотов, но он должен делать то, что вы пытаетесь достичь.

1 голос
/ 07 августа 2011

Мне кажется, что лучшее решение - сделать элемент управления круговым отображением невидимым для теста на удар.Я просто устанавливаю PivotMain.IsHitTestVisible = false и устанавливаю значение true, когда я заканчиваю запись.

Существует хороший подход к прикрепленным свойствам, позволяющий сделать видимым тест на попадание конкретного элемента, при этом не делая невидимым весь тест на панораму или сводный элемент: вот ссылка на запись в блоге автора с источникомкод: http://blogs.msdn.com/b/luc/archive/2010/11/22/preventing-the-pivot-or-panorama-controls-from-scrolling.aspx

Работает у меня до тех пор, пока динамическая загрузка и удаление элементов сводки с заголовком текстового блока не будет добавлено в элемент управления сводкой SDK.

0 голосов
/ 05 августа 2011

Недостаток блокировки человека в сводном элементе или его отключения, чтобы человек не мог ориентироваться, заключается в том, что вы собираетесь расстроить пользователя. PivotItems предназначены для переключения между ними, и написание приложения, поведение которого отличается от этого, отнимет у пользователя интерфейс, потому что приложение не будет вести себя так, как они ожидают.

Лично, если вы собираетесь заблокировать их в один элемент сводной таблицы, я думаю, вам следует создать другую страницу без элемента управления сводной панели и перейти к ней. Кроме того, независимо от того, решите ли вы сделать это таким образом или нет, вам следует помнить, что независимо от того, заблокированы ли они в определенном стержне или перемещены на другую страницу, кнопка «Назад» должна работать должным образом, или приложение выиграло пройти сертификацию.

...