2011-03-10 24 views
5

He estado buscando en Google este tema desde hace algún tiempo, pero no he podido encontrar una solución que funcionó para mí. Lo que pasa es que tengo un control emergente con un control de usuario, en el cual el usuario puede ingresar un nuevo valor para un listpicker. Todo esto funciona bien en modo retrato, pero si el teléfono está girado (emulador), la ventana emergente permanece en modo retrato. Abrir la ventana emergente cuando el teléfono ya está en el paisaje, tampoco tiene ningún efecto.WP7: ¿girando una ventana emergente + contenido?

¿Hay alguna manera de corregir este problema? He visto a algunas personas sugiriendo usar Rotatetransform, pero si hago esto en un cuadro de texto, etc., desaparece por completo:/

Respuesta

4

Creo que esto es potencialmente un error en el control Popup; Ciertamente escuché la pregunta hecha antes. Sin embargo, también he oído que el rendimiento de los controles Popup no es tan bueno, por lo que creo que sería mejor que simplemente utilizaras un elemento de marco regular (como Grid) para contener tu contenido emergente y mostrarlo/esconderlo (con animación si corresponde) en consecuencia. Al menos de esa manera se rotará correctamente cuando cambie la orientación de la página.

+0

Tratando esto ahora y parece prometedor - Gracias! –

+0

+1 No creo que la ventana emergente esté realmente diseñada teniendo en cuenta el paisaje y mucho menos una aplicación que admita ambas orientaciones. Una versión de bricolaje es probablemente mejor. – AnthonyWJones

+0

Siguiendo la sugerencia de Dereks, agregué el control de usuario a una nueva grilla en mi XAML para la página. Luego, simplemente alternar la visibilidad de las cuadrículas, y funciona perfectamente en retrato y paisaje. Gracias Derek! –

2

No rootee la ventana emergente pero coloque un borde dentro de la ventana emergente y cargue el contenido en el borde.

Yo tengo que trabajar de esta manera:

//In .xaml 
<Popup x:Name="myPopup"> 
    <Grid> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="480" /> 
     </Grid.RowDefinitions> 

     <Border x:Name="popupBorder"/> 
    </Grid> 
</Popup> 

//In .xaml.cs 
popupBorder.Child = new MyPopupPage(); //MyPopupPage is the "Windows Phone Landscape Page" 
myPopup.IsOpen = true; 
+0

En su ejemplo, coloca una Grilla y no un Borde.^_ ^ –

Cuestiones relacionadas