2011-11-30 13 views
6

मैं पोर्ट्रेट अभिविन्यास के साथ एक टैबलेट पर एक एप्लिकेशन विकसित कर रहा हूं।डब्ल्यूपीएफ अभिविन्यास

हालांकि, जब टैबलेट लैंडस्केप मोड में बदल जाता है, तो एप्लिकेशन भी बदल जाता है, और सभी संरेखण फेंक दिए जाते हैं। तो क्या कोई तरीका है कि मैं अपने डब्ल्यूपीएफ एप्लिकेशन को एक ही अभिविन्यास में लॉक कर सकता हूं?

धन्यवाद!

+1

आपके प्रश्न का सीधा जवाब नहीं है, लेकिन यदि आप एक फ्लैश लेआउट का उपयोग करने के लिए अपने यूआई को फिर से डिजाइन करते हैं तो आपके उपयोगकर्ताओं को टैबलेट को लैंडस्केप मोड में बदलते समय आपके यूआई के किनारे नहीं देख पाएंगे। डब्ल्यूपीएफ में धाराप्रवाह लेआउट करने के लिए बहुत सारे विकल्प हैं। –

+0

क्या आप लेआउट करने के लिए कैनवास का उपयोग कर रहे हैं? –

उत्तर

6

मुझे Martin से सहमत होना है: मैंने टैबलेट पीसी ऐप्स स्वयं विकसित किए हैं और आपको एक लेआउट प्रदान करना चाहिए जो परिदृश्य और चित्र में अच्छी तरह से काम करता है।

Microsoft.Win32.SystemEvents.DisplaySettingsChanged += new EventHandler(SystemEvents_DisplaySettingsChanged); 
} 

void SystemEvents_DisplaySettingsChanged(object sender, EventArgs e) 
{ 
    if (SystemParameters.PrimaryScreenWidth > SystemParameters.PrimaryScreenHeight) 
    { 
    // runs in landscape 
    } 
    else 
    { 
    // runs in portrait 
    } 
} 
0

मैं एक ही समस्या का सामना करते आ गया है कि जब टेबलेट के लिए एक WPF अनुप्रयोग विकसित करने और पता लगाने के लिए कैसे समझा MSDN से इस लेख पाया:

से है कि आप अभिविन्यास में परिवर्तन इस तरह से पता लगा सकते हैं इसके अलावा

स्क्रीन रोटेशन और अभिविन्यास: http://msdn.microsoft.com/en-us/library/ms812142.aspx

+0

यह आलेख Windows XP टैबलेट पीसी संस्करण 2005 – Indy9000

0

मुझे स्क्रीन अभिविन्यास को लॉक करने के लिए किसी भी सार्वजनिक एपीआई से अवगत नहीं है। अधिकतर क्योंकि आम तौर पर, टैबलेट पीसी निर्माताओं ने अपनी पूर्व-स्थापित उपयोगिताओं या ड्राइवरों को प्रदान किया जो अभिविन्यास बदलने के लिए एक्सेलेरोमीटर डेटा का उपयोग करते थे। यह ओएस फ़ंक्शन में निर्मित नहीं था। यह विंडोज 8 में बदल सकता है।

हालांकि यह लॉकिंग अभिविन्यास के समान नहीं है, तो आप अपने रूट कंटेनर के लेआउटट्रांसफॉर्म में घुमावदार परिवर्तन जोड़कर अभिविन्यास परिवर्तनों पर प्रतिक्रिया करने का प्रयास कर सकते हैं। यह लेआउट स्पेस को बदल देगा ताकि आपके एप्लिकेशन ने सोचा कि यह अभी भी 90 डिग्री घुमाया गया है लेकिन शेष ओएस सहमत नहीं होगा। इसलिए यह वास्तव में पूर्ण स्क्रीन अनुप्रयोगों के लिए केवल व्यावहारिक है। आप मेट्रो एप्लिकेशन (जहां प्रकट में वरीय झुकाव सेट कर सकते हैं) कोई असली तरीका नहीं करने के लिए है नहीं लिख रहे हैं

2

स्वेन एक अच्छा कैसे अभिविन्यास परिवर्तन का पता लगाने के दिखा काम करता है ...

हालांकि अभिविन्यास परिवर्तन करते हैं, फिर भी अगर आप केवल पोर्ट्रेट आप कुछ इस तरह कर सकता है की अनुमति देता है में रुचि रखते हैं:

देखें मॉडल:

Microsoft.Win32.SystemEvents.DisplaySettingsChanged += new   
    EventHandler(SystemEvents_DisplaySettingsChanged); 
} 

public bool IsLandscape { get; set; } 

void SystemEvents_DisplaySettingsChanged(object sender, EventArgs e) 
{ 
    if (SystemParameters.PrimaryScreenWidth > SystemParameters.PrimaryScreenHeight) 
    { 
     IsLandscape = true; 
    } 
    else 
    { 
     IsLandscape = false; 
    } 

    RaisePropertyChanged("IsLandscape"); 
} 

में आप मुख्य Window.xaml:

012,
<Border > 
    <Border.Style> 
     <Style TargetType="{x:Type Border}"> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding IsLandscape}" Value="True"> 
        <Setter Property="LayoutTransform"> 
         <Setter.Value> 
          <RotateTransform Angle="90"/> 
         </Setter.Value> 
        </Setter> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </Border.Style> 

///The rest of your controls and UI 

</Border> 

इसलिए हम वास्तव में अभिविन्यास, हम बस देख रहे हैं जब ऐसा होता है सीमित नहीं कर रहे हैं, और हमारे यूआई घूर्णन कर रहे तो यह अभी भी लगता है कि यह पोर्ट्रेट मोड में हैं :) फिर इस गैर मेट्रो विन 8 अनुप्रयोगों के लिए ज्यादातर है और या अनुप्रयोग जो Win 7 टैबलेट पर भी चलते हैं।

+0

के लिए है, यह एक अच्छा समाधान नहीं दिखता है, क्योंकि मैंने देखा कि गेम को गेम को घुमाने की आवश्यकता नहीं है, यह गेम खेलने के दौरान पोर्ट्रेट मोड को अक्षम कर सकता है। – qakmak

संबंधित मुद्दे