2011-03-10 14 views
5

Bu konuyu bir süredir araştırıyorum, ama benim için çalışan bir çözüm bulamadım. Sorun şu ki, kullanıcı denetimi ile kullanıcı tarafından bir liste için yeni bir değer girebilecek bir açılır pencere kontrolu var. Bu, portre modunda iyi çalışır, ancak telefon döndürülürse (öykünücü), açılır pencere dikey modda kalır. Telefon zaten manzaradayken açılır pencerenin açılması, herhangi bir etkisi de yoktur.WP7: Bir pop-up + içeriği mi döndürüyorsunuz?

Bu sorunu düzeltmenin bir yolu var mı? Ben Rotatetransform kullanarak öneren bazı insanlar gördüm, ama bunu bir metin kutusu vb üzerinde yaparsanız, tamamen kaybolur:/

cevap

4

Bu potansiyel Popup denetiminde bir hata olduğunu düşünüyorum; Daha önce sorduğum soruyu kesinlikle duydum. Bununla birlikte, Popup kontrollerinin performansının o kadar da iyi olmadığını duydum, bu yüzden pop-up içeriğinizi içermek ve göster/gizlemek için düzenli bir çerçeve öğesini (Grid gibi) kullanmanın daha iyi olacağını düşünüyorum. (uygunsa animasyon ile) buna göre. En azından, sayfa yönlendirmesi değiştiğinde bu şekilde düzgün döndürülebilir.

+0

şimdi bu çalışıyorum ve umut verici görünüyor - Teşekkür:

Ben bu gibi çalışması lazım! –

+0

+1 Her iki yönlendirmeyi de destekleyen bir uygulama olmasına rağmen, pop-up'ın peyzajı düşünerek tasarlandığını düşünmüyorum. Bir DIY versiyonu muhtemelen daha iyi. – AnthonyWJones

+0

Dereks önerisini takip ederek, kullanıcı kontrolünü sayfa için XAML'imde yeni bir ızgaraya ekledim. Sonra sadece ızgaraların görünürlüğünü değiştiririm ve hem portre hem de manzarada mükemmel çalışır. Teşekkürler Derek! –

2

Pop-up'ı döndürmeyin, ancak pop-up içine bir kenarlık yerleştirmeyin ve içeriği kenarlığa yükleyin.

//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

Örneğinizde bir Izgara değil, Kenarlık koydu.^_ ^ –