Cómo configurar mediante programación el elemento Panorama seleccionado en WP7

Resuelto CACuzcatlan asked hace 13 años • 6 respuestas

Estoy usando un control panorámico en una aplicación WP7. Uno de los PanoramaItems lo lleva a otra página, que luego le permite enviar un correo electrónico a través de EmailComposeTask. Si no selecciona enviar el correo electrónico y presiona el botón Atrás, Panorama regresa al último elemento que seleccionó. Sin embargo, si selecciona enviar un correo electrónico (y por lo tanto abandona la aplicación), no regresa al PanoramaItem seleccionado previamente. En lugar de ello, vuelve al primer elemento del Panorama. Intenté realizar un seguimiento del índice seleccionado y configurarlo, pero recibí un error que decía que SelectedIndex no se puede configurar. Esto se confirma en la documentación de MSDN http://msdn.microsoft.com/en-us/library/microsoft.phone.controls.panorama.selectedindex%28VS.92%29.aspx

¿Hay alguna forma de configurar manualmente el índice/elemento seleccionado en un panorama? Si no es así, ¿hay alguna forma de recordar lo que se seleccionó, incluso si el usuario abandona la aplicación para redactar un correo electrónico?

CACuzcatlan avatar Jan 07 '11 10:01 CACuzcatlan
Aceptado

No estoy seguro de si puedes forzar mediante programación una animación a otra PanoramaItem, pero puedes cambiar Panorama.DefaultItem .

Entonces es posible que tenga 3 PanoramaItemy en el OnNavigatedTo()controlador, cambie el elemento predeterminado a través de:

panoramaControl.DefaultItem = panoramaControl.Items[indexToSet];

Esto debería ayudar cuando se recupere de una lápida.

Alastair Pitts avatar Jan 07 '2011 03:01 Alastair Pitts

Podrías probar la solución publicada por Silicon Shark en este hilo. Se observa que funciona, pero solo en la pantalla inicial, lo que no debería ser un problema para sus requisitos de restauración del estado después de la eliminación.

¿Cómo configurar mediante programación el elemento visible en un control Panorama?

Puede obtener la página actualmente activa desde la propiedad SelectedIndex del panorama.

Desafortunadamente, configurar DefualtItem es sólo una aproximación a la solución de este problema, que quizás ya hayas descubierto.

Editar: tenga en cuenta que al configurar DefaultItem, cambia qué página del panorama es la primera página. Es una diferencia sutil, pero verás lo importante que es observar la posición del encabezado y el contorno de la imagen de fondo.

Mick N avatar Jan 07 '2011 03:01 Mick N

Aquí hay una solución. Funciona como se esperaba y no reorganiza su panorama, por lo que su interfaz de usuario es consistente.

pan.SetValue(Panorama.SelectedItemProperty, panoramaItem);
Panorama temp = pan;
LayoutRoot.Children.Remove(pan);
LayoutRoot.Children.Add(temp);
LayoutRoot.UpdateLayout();

Esta no es una solución perfecta ya que no se desliza tan bien como debería hacerlo el panorama y probablemente no sea muy eficiente, pero por otro lado no está cambiando el elemento predeterminado para que su interfaz de usuario se mantenga consistente.

Elw00t avatar Dec 12 '2012 18:12 Elw00t

Probé las soluciones enumeradas aquí sin éxito. ¡Esto es lo que hice y que funciona de maravilla!

PanoramaItem panItem = (PanoramaItem)panorama.Items[1];

panorama.Items.Remove(panItem);

panorama.Items.Insert(0, panItem);

¡Debe eliminar el panel de la lista y volver a insertarlo en la posición deseada!

Phil avatar Sep 21 '2012 00:09 Phil