2012-10-17 13 views
15

वीएमवेयर के तहत चल रहे विंडोज 8 इंस्टेंस (x64) पर एक WPF एप्लिकेशन को पोर्ट करते समय, मैंने पाया कि सभी पॉपअप को उनके द्वारा किए जाने वाले कार्यों के विरुद्ध गलत तरीके से गठबंधन किया गया है। आगे की जांच से पता चलता है कि नव निर्मित परियोजना के लिए भी यह एक आम "समस्या" है। ऐसा लगता है कि डब्ल्यूपीएफ के पॉपअप कंट्रोल ने बाएं और दाएं का अर्थ बदल दिया है! समस्या बनाम 2012 का उपयोग कर एक WPF आवेदन बनाकर शो हो सकता है और कुछ पॉपअप की तरह, यह में डाल कर सकते हैं: पॉपअप कि बाईं तरफ प्रदर्शित करने के लिए वास्तव में सही है और इसके विपरीत पर प्रदर्शित होता है माना जाता हैविंडोज 8 पॉपअप स्थान

<Grid Background="Gray"> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="129*"/> 
     <ColumnDefinition Width="264*"/> 
     <ColumnDefinition Width="124*"/> 
    </Grid.ColumnDefinitions> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="30"/> 
     <RowDefinition Height="30"/> 
     <RowDefinition Height="*"/> 
    </Grid.RowDefinitions> 
    <DockPanel Grid.Row="1" Grid.Column="1" Background="LightGray"> 
     <Popup StaysOpen="True" IsOpen="True" Grid.RowSpan="2" Placement="Right" AllowsTransparency="True" > 
      <TextBlock Text="Right" Foreground="White" /> 
     </Popup> 
     <Popup StaysOpen="True" IsOpen="True" Grid.RowSpan="2" Placement="Left" AllowsTransparency="True" > 
      <TextBlock Text="Left" Foreground="White" /> 
     </Popup> 
     <Popup StaysOpen="True" IsOpen="True" Grid.RowSpan="2" Placement="Top" AllowsTransparency="True" > 
      <TextBlock Text="Top" Foreground="White" /> 
     </Popup> 
     <Popup StaysOpen="True" IsOpen="True" Grid.RowSpan="2" Placement="Bottom" AllowsTransparency="True" > 
      <TextBlock Text="Bottom" Foreground="White" /> 
     </Popup> 
    </DockPanel> 
</Grid> 

, जो नीचे बाईं ओर होना चाहिए वह नीचे दाएं, आदि पर प्रदर्शित होता है ..

मेरा प्रश्न है: 1) क्या यह एक बग या फीचर है? 2) यदि यह एक सुविधा है, तो कोड में मिनीम्यून परिवर्तन कैसे करें ताकि वे विंडोज 7 और विंडोज 8 के अंदर उसी तरह प्रदर्शन कर सकें?

+0

बस अपने एक्सएमएल को उसी सटीक वातावरण में कॉपी किया है जो आप चल रहे हैं, यह सही जगहों पर पॉपअप के साथ सही ढंग से काम करता है –

+0

यह मेरे मामले से अलग है, है ना। क्या आप विंडोज 8 के रिलीज संस्करण चला रहे हैं? मुझे याद है कि ऐसा कोई समस्या नहीं प्रतीत होती जब मैंने डेवलपर पूर्वावलोकन या विंडोज 8 के उपभोक्ता पूर्वावलोकन संस्करणों के तहत एक ही एप्लिकेशन चलाने की कोशिश की। –

+0

मैं वीएमवेयर प्लेयर –

उत्तर

17

आगे की जांच से पता चलता नियंत्रण कक्ष के अंदर एक सेटिंग है कि वहाँ: ControlPanel-> हार्डवेयर और ध्वनि> टेबलेट पीसी (नोड नाम शायद नहीं बिल्कुल के बाद से मैं Windows 8 का एक गैर-अंग्रेजी संस्करण का उपयोग कर रहा से मेल खाते हैं)। हाथ के लिए एक सेटिंग है जिसका उपयोग उपयोगकर्ता लिखना पसंद करते हैं।

किसी को "सही स्थिति" (ऊपर दिए गए समाधान का उपयोग किए बिना) पॉपअप को .NET फ्रेमवर्क के मैनुअल के अनुसार रखने के लिए "बाएं हाथ का उपयोग करके लेखन करना पसंद करते हैं" का चयन करना होगा। कम से कम विध्वंस अनुप्रयोगों के लिए, यह धारणा बिल्कुल सही नहीं हो सकती है!

+1

पर सेट किया गया है यह टिप शायद मुझे जांच के घंटे बचाएगी। –

+1

आपने मुझे जांच के घंटे बचाए। धन्यवाद! – TcKs

+0

गंभीरता से ... मैं केवल 2 घंटों के लिए इसमें हूं ... यह इतना अधिक समय बचा है। मैं इस कारण से stackoverflow प्यार करता हूँ! – TravisWhidden

4

हमने इसके लिए एक त्वरित समाधान लिखा और कोड को पहले पोस्ट किए गए किसी अन्य एसओ थ्रेड में पोस्ट किया। यह फिक्स स्थिति ऐप को आपके ऐप से एक साथ हटा देगा, अगर आप यही चाहते हैं।

Popup Position with Handedness change

आशा इस कोई मदद करता है!