2011-05-29 11 views
5

"कैच" नहीं करता है, मैं पॉपअप नियंत्रण का उपयोग कर रहा हूं, और किसी कारण से इसके लंबवत संरेखण की अपेक्षा नहीं होती है। यह XAML मेरे पास है:पॉपअप कंट्रोल वर्टिकल एलाइनमेंट

<Grid Width="100" Height="30" > 
     <TextBox Text="Hello" /> 
     <Popup IsOpen="True" VerticalAlignment="Bottom" HorizontalAlignment="Stretch" > 
      <Button Content="Hello" /> 
     </Popup> 
    </Grid> 

मैं उम्मीद है कि पॉपअप के चौड़ाई 100px ही होगा, के रूप में यह माता पिता ग्रिड है। हालांकि, पॉपअप के अंदर बटन व्यवहार करता है जैसे कि क्षैतिज संरेखण बाएं है, यानी, बटन की चौड़ाई बस इसके अंदर "हैलो" शब्द को अनुमति देने के लिए पर्याप्त है, और मैं यह नहीं समझ सकता कि क्यों, या इसे कैसे बनाया जाए युक्त ग्रिड के समान चौड़ाई।

धन्यवाद!

उत्तर

9

दुर्भाग्यवश, Popup एक ही दृश्य पेड़ का हिस्सा नहीं है क्योंकि XAML में शेष तत्वों को परिभाषित किया गया है। यह सचमुच नई विंडो है, यद्यपि एक बहुत ही सरल और आम तौर पर छोटी खिड़की है।

एक और तरीका रखें, Popup वास्तव में मुख्य विंडो के लेआउट में भाग नहीं लेता है। तो HorizontalAlignment जैसी चीजों को बदलने से कोई प्रभाव नहीं पड़ता है क्योंकि वह संपत्ति नियंत्रित करती है कि लेआउट की स्थिति कैसे और इस तत्व को इसके तत्व के सापेक्ष आकार देता है।

यह "अनाथ तत्व" समस्या Popup से निपटने के दौरान समस्याओं का कोई अंत नहीं बनती है। फिर भी, अलग-अलग विंडो होने वाली सभी समस्याओं को हल करने के लिए टूल और तकनीकें हैं।

पहला सुझाव जो मैं दे सकता हूं वह प्लेसमेंट गुण, PlacementTarget और Placement को समझना है। आप की स्थिति के लिए इन गुणों का उपयोग कर सकते हैं। आप आकार बदलने की देखभाल करने के लिए डाटाबेसिंग के ElementName वाक्यविन्यास का भी उपयोग कर सकते हैं।

<Grid Name="grid" Width="100" Height="30" > 
    <TextBox Text="Hello" /> 
    <Popup IsOpen="True" 
      Placement="Bottom" 
      PlacementTarget="{Binding ElementName=grid}" 
      Width="{Binding ActualWidth, ElementName=grid}"> 
     <Button Content="Hello" /> 
    </Popup> 
</Grid> 
+0

विंडोज फोन सिल्वरलाइट पर:: * प्रतीक 'प्लेसमेंट' का समाधान नहीं कर सकते हैं *

यहाँ अपनी स्थिति में इन तकनीकों का उपयोग करने का एक उदाहरण है। यह सवाल विशेष रूप से सिल्वरलाइट के लिए था। –

+0

विंडोज फोन 8.1 के लिए एक ही मुद्दा – Sergey

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