Как реализовать полоску фотографий в стиле приложения «Камера» на WP7?

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

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

И это отлично работает. Но когда я создаю StackPanel для своей полосы и реализую свою навигацию (или просто увеличиваю масштаб с помощью преобразования z-index), я вижу, что моя StackPanel не может отображать больше, чем размеры экрана (она обрезана до размера только одной сетки) . Мне показалось, что я нашел сообщение с описанием этой проблемы, но сейчас не могу его найти - напишите, если вы знаете, о каком сообщении я думаю, или если вы знаете больше об этом ограничении.

Единственное решение, которое я нашел, это использовать ScrollViewer, что абсолютно не то поведение, которое я хочу, но оно позволяет StackPanel быть шире, чем экран.

Моя реальная проблема связана с поведением ScrollViewer - потому что мне нужно переходить от сетки к сетке (точно так же, как полоса фотографий) вместо свободной прокрутки, и, насколько я могу судить, HorizontalOffset не является анимируемым свойством. Я могу заставить его анимировать, вызывая ScrollToHorizontalOffset каждые 15 миллисекунд, в основном реализуя свой собственный эффект плавности вручную. Это похоже на огромный взлом, и поведение очень глючное (либо я не получаю событие ManipulationCompleted каждый раз, когда я его ожидаю - в конце каждого действия смахивания, - либо встроенная физика инерции ScrollViewer мешает моему эффекту ).

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

Я рассматривал возможность использования элемента управления Pivot, но это не это не совсем то, что я хочу (если бы я хотел, чтобы каждый элемент полностью анимировался до того, как появится следующий, вместо того, чтобы казаться прикрепленным к одной полосе, для этого должно быть меньше ограничивающих способов). Что еще более важно, полоса - это лишь один из многих эффектов, которые я хочу делать динамически. Я бы хотел поочередно использовать 3D-наклон в стиле CoolIris или поворот страницы в стиле FlipPad. Я считаю, что если бы моя текущая настройка работала нормально, было бы легко реализовать эти другие эффекты (как тематические переходы). Использование такого элемента управления, как Pivot, не приблизит меня к этому видению.

Вот мой XAML:


        
                
                
                    
                
                
                    
                
                
                    
                
                
        
    

10
задан Community 23 May 2017 в 12:30
поделиться