2011-05-13 14 views
5

में लॉक फोन अभिविन्यास विंडोज फोन 7 में फोन अभिविन्यास को मैन्युअल रूप से लॉक करना संभव है? क्योंकि मैं एक निश्चित यूआई के साथ बटन 'रोटेशन को संभालने के लिए एक्सेलेरोमीटर का उपयोग कर रहा हूं।WP7 (विंडोज फोन 7) एक्सएएमएल या सी #

मैं कोशिश की है कि:

XAML

SupportedOrientations="Landscape" Orientation="LandscapeLeft" 
OrientationChanged="PhoneApplicationPage_OrientationChanged" 

में और पीछे कोड में:

private void PhoneApplicationPage_OrientationChanged(object sender, OrientationChangedEventArgs e) 
{ 
    //Orientation locking 
    //Do nothing 
} 

लेकिन यूआई अभी भी परिदृश्य के बीच स्थानांतरण और छोड़ दिया लैंडस्केप दाएं ...

धन्यवाद।

उत्तर

5

लैंडस्केप लिफ्ट और लैंडस्केप राइट के बीच स्थानांतरण को रोकने का कोई तरीका नहीं है। यह डिजाइन द्वारा है।

आसपास के काम के रूप में, आप OnOrientationChanged में अपने UIElements को मैन्युअल रूप से घुमाने/परिवर्तित कर सकते हैं ताकि उपयोगकर्ता को कोई अंतर दिखाई न दे।
मैंने इस तकनीक का उपयोग "पृष्ठभूमि" छवि को अभिविन्यास के बावजूद घुमाए जाने से रोकने के लिए किया है, लेकिन उसके बाद एक अलग नियंत्रण है जो पॉपअप की तरह दिखाई देता है लेकिन जो छवि के शीर्ष पर अभिविन्यास परिवर्तनों का जवाब देता है।

+0

यहां नमूना कोड देखें http://forums.create.msdn.com/forums/t/70673.aspx –

0

InitializeComponent();InitializeComponent();MainPage() में पोर्ट्रेट मोड में अभिविन्यास को लॉक करने के लिए कन्स्ट्रक्टर में this.SupportedOrientations = SupportedPageOrientation.Portrait; जोड़ें। यह मेरे लिए ठीक काम करता है।

2

हाय मुझे ओवरराइडिंग द्वारा समाधान मिला, ऑनऑरिएंटेशन विधि। इससे मेरा काम बनता है। यह सिस्टम ट्रे और एप्लिकेशन मेनू को प्रभावित नहीं करता है, लेकिन पृष्ठ चयनित अभिविन्यास में रहता है।

protected override void OnOrientationChanged(OrientationChangedEventArgs e) 
{ 
    if (e.Orientation == PageOrientation.LandscapeLeft) 
     base.OnOrientationChanged(e); 
} 
संबंधित मुद्दे