2011-03-10 13 views
5

मैं इस मुद्दे को कुछ समय से गुगल रहा हूं, लेकिन मेरे लिए काम करने वाले समाधान को खोजने में सक्षम रहा है। बात यह है कि मेरे पास उपयोगकर्ता नियंत्रण के साथ पॉपअप नियंत्रण है, जिसमें उपयोगकर्ता सूचीपिकर के लिए एक नया मान डाल सकता है। यह सब पोर्ट्रेट मोड में ठीक काम करता है, लेकिन अगर फोन घुमाया जाता है (एमुलेटर), पॉपअप पोर्ट्रेट मोड में रहता है। जब फोन पहले से ही परिदृश्य में है, तो पॉपअप खोलना, इसका कोई प्रभाव नहीं पड़ता है।WP7: पॉपअप + सामग्री घुमाने?

क्या इस मुद्दे को ठीक करने का कोई तरीका है? मैंने कुछ लोगों को Rotatetransform का उपयोग करने का सुझाव दिया है, लेकिन यदि मैं इसे टेक्स्टबॉक्स आदि पर करता हूं, तो यह पूरी तरह से गायब हो जाता है:/

उत्तर

4

मुझे लगता है कि यह संभावित रूप से Popup नियंत्रण में एक बग है; मैंने निश्चित रूप से पहले पूछे गए प्रश्न को सुना है। हालांकि, मैंने यह भी सुना है कि Popup नियंत्रण का प्रदर्शन इतना अच्छा नहीं है, इसलिए मुझे लगता है कि आप अपनी पॉपअप सामग्री को शामिल करने और इसे छिपाने/छिपाने के लिए नियमित फ्रेमवर्क तत्व (जैसे Grid) का उपयोग करके बेहतर होगा। (अगर उपयुक्त हो तो एनीमेशन के साथ)। पृष्ठ अभिविन्यास में परिवर्तन होने पर कम से कम इस तरह से यह घुमाया जाएगा।

+0

अब यह कोशिश कर रहा है और यह होनहार लग रहा है - धन्यवाद! –

+0

+1 मुझे नहीं लगता कि पॉपअप वास्तव में दिमाग में परिदृश्य के साथ बनाया गया है, केवल एक ऐप दें जो दोनों ओरिएंटेशन का समर्थन करता है। एक DIY संस्करण शायद बेहतर है। – AnthonyWJones

+0

डेरेक्स सुझाव के बाद, मैंने पृष्ठ के लिए अपने एक्सएएमएल में एक नए ग्रिड में उपयोगकर्ता नियंत्रण जोड़ा है। तब मैं बस ग्रिड दृश्यता को टॉगल करता हूं, और यह पोर्ट्रेट और परिदृश्य दोनों में पूरी तरह से काम करता है। धन्यवाद डेरेक! –

2

पॉपअप को मत दोहराएं लेकिन पॉपअप के अंदर एक सीमा रखें और सामग्री को सीमा में लोड करें।

मैं इसे इस तरह काम करने के लिए मिल गया:

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

आपके उदाहरण में आप एक ग्रिड डालते हैं और सीमा नहीं।^_ ^ –