WP7 Panorama control с задержкой скольжения при скрытии панели приложения - PullRequest
1 голос
/ 06 июля 2011

У меня есть приложение для Windows Phone с управлением панорамой.

В настоящее время в Panorama есть две страницы.

На одной странице должна быть видимая панель приложения с кнопками, а на другой - нет.

Я использую событие SelectionChanged для панорамы для изменения свойства IsVisible в ApplicationBar.

private void Panorama_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
        {
            ApplicationBar.IsVisible = Panorama.SelectedIndex == 0;
        }

Функциональность, которую я получаю, является желаемой, но при таком поведении я получаю ужасную задержку (кратковременное замораживание скользящей анимации) моей панорамы.Это, вероятно, происходит из-за того, что поток пользовательского интерфейса должен работать с «родной» панелью приложений самого телефона Windows.

Каков наилучший способ избежать этой проблемы?

Должен ли я вызывать ApplicationBar.IsVisible = Panorama.SelectedIndex == 0; в отдельном потоке?Или я должен использовать события ManipulationStarted и ManipulationCompleted элемента, чтобы скрыть панель приложения?

Спасибо.

Ответы [ 6 ]

1 голос
/ 28 июня 2013

На тот случай, если кто-то еще столкнется с этим, datou.guo прав. Детали по непрозрачности объясняют это здесь: Документация AppBar

Они рекомендуют использовать 0, .5 или 1 для непрозрачности панели приложения. Когда непрозрачность равна 1, размер страницы фактически изменяется при изменении в панели приложений, что объясняет отставание. Если непрозрачность равна .5, этого не произойдет. Они не упоминают никаких других значений непрозрачности, но я попробовал 0,99, и это предотвратило отставание.

Обратите внимание, что вам, вероятно, придется обновить макет, чтобы иметь некоторое поле внизу страницы, поскольку панель приложения больше не занимает место на странице, когда она прозрачна.

1 голос
/ 02 августа 2012

Попробуйте установить непрозрачность панели приложения на 0.999999 вместо значения по умолчанию (1.0). Должно работать.

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

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

0 голосов
/ 23 мая 2012

Здесь я нашел совет для вашего случая Руководство по проектированию Panorama Control для Windows Phone Это говорит о том, что если вы используете панель приложения в вашей Панораме, установите режим на минимум. Этот режим разработан специально для максимизации пространства экрана на странице Panorama.

0 голосов
/ 06 июля 2011

Вам следует создать приложение, чтобы не использовать панель приложения на той же странице, что и элемент управления панорамой.

Оба не предназначены для совместного использования. Это как по дизайну, так и по техническим причинам. (Поскольку их никогда не следует использовать совместно по причинам, связанным с конструкцией, при их использовании возникают технические проблемы, которые крайне неудобны для решения.) Вы обнаружили одну такую ​​проблему.

Если у вас есть контент в элементе панорамы, с которым пользователь должен взаимодействовать, переместите элементы управления на элемент или на отдельную страницу (если ссылка на них выбрана).

Обновление
Прежде чем кто-либо укажет - некоторые центры (офис и люди) объединяют панорамы и панели приложений в текущих сборках манго. Официальных комментариев от Micorsoft нет. (Я только что спросил.) Руководство по дизайну для Mango еще не было выпущено. Вряд ли будет больше информации, пока они не будут.
Шаблон панорамы с бета-пакетом Mango по-прежнему содержит комментарий, указывающий, что вам не следует объединять панель приложения и панораму.

0 голосов
/ 06 июля 2011

Запуск этого фрагмента кода в отдельном потоке не поможет, потому что в конце дня вам нужно будет использовать Deployment.Current.Dispatcher.BeginInvoke (), чтобы применить эффект к потоку пользовательского интерфейса (в противном случае вы получите перекрестноеисключение потока).

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

...