WinForms DockStyle.Fill के बराबर WPF है:
HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
यह लगभग नियंत्रणों के लिए डिफ़ॉल्ट है, इसलिए सामान्य तौर पर आपको अपने मूल कंटेनर को भरने के लिए WPF नियंत्रण के लिए कुछ भी करने की आवश्यकता नहीं है : वे ऐसा स्वचालित रूप से करते हैं। यह सभी कंटेनरों के लिए सच है जो अपने बच्चों को न्यूनतम आकार तक नहीं निचोड़ते हैं।
साधारण गलती
अब मैं कई सामान्य गलतियों की व्याख्या करूंगा जो HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
उम्मीद के मुताबिक काम करने से रोकती हैं ।
1. स्पष्ट ऊँचाई या चौड़ाई
एक सामान्य गलती नियंत्रण के लिए एक चौड़ाई या ऊँचाई को स्पष्ट रूप से निर्दिष्ट करना है। तो अगर आपके पास यह है:
<Grid>
<Button Content="Why am I not filling the window?" Width="200" Height="20" />
...
</Grid>
बस चौड़ाई और ऊंचाई विशेषताओं को हटा दें:
<Grid>
<Button Content="Ahhh... problem solved" />
...
</Grid>
2. युक्त पैनल निचोड़ न्यूनतम आकार को नियंत्रित करता है
एक और आम गलती यह है कि युक्त पैनल को आपके नियंत्रण को निचोड़ना होगा जैसा कि यह जाएगा। उदाहरण के लिए एक ऊर्ध्वाधर StackPanel हमेशा अपनी सामग्रियों को लंबवत रूप से छोटा करेगा जितना कि वे जाएंगे:
<StackPanel>
<Button Content="Why am I squished flat?" />
</StackPanel>
दूसरे पैनल में बदलें और आपका जाना अच्छा होगा:
<DockPanel>
<Button Content="I am no longer squished." />
</DockPanel>
इसके अलावा, कोई भी ग्रिड पंक्ति या स्तंभ जिसकी ऊंचाई "ऑटो" है, उसी तरह से उस दिशा में इसकी सामग्री को निचोड़ लेगा।
कंटेनरों के कुछ उदाहरण जो उनके बच्चों को निचोड़ते नहीं हैं:
- ContentControls अपने बच्चों को कभी नहीं निचोड़ते (इसमें बॉर्डर, बटन, चेकबॉक्स, स्क्रॉल व्यूअर और कई अन्य शामिल हैं)
- एक पंक्ति और स्तंभ के साथ ग्रिड
- "*" पंक्तियों और स्तंभों के साथ ग्रिड
- DockPanel अपने अंतिम बच्चे को नहीं निचोड़ता है
- TabControl इसकी सामग्री को निचोड़ नहीं करता है
कंटेनरों के कुछ उदाहरण जो उनके बच्चों को निचोड़ते हैं:
- स्टैकपैनल अपने ओरिएंटेशन दिशा में निचोड़ता है
- उस दिशा में एक "ऑटो" आकार की पंक्ति या स्तंभ निचोड़ के साथ ग्रिड
- DockPanel अपनी गोदी दिशा में अपने अंतिम बच्चे को छोड़ देती है
- TabControl अपने हेडर को निचोड़ता है (टैब पर प्रदर्शित होता है)
3. स्पष्ट ऊँचाई या चौड़ाई आगे
यह आश्चर्यजनक है कि मैं कितनी बार ग्रिड या डॉकपैनल को इस तरह स्पष्ट ऊंचाई और चौड़ाई देता हुआ देखता हूं:
<Grid Width="200" Height="100">
<Button Content="I am unnecessarily constrainted by my containing panel" />
</Grid>
सामान्य तौर पर आप कभी भी किसी पैनल को एक स्पष्ट ऊँचाई या चौड़ाई नहीं देना चाहते हैं। लेआउट समस्याओं का निदान करते समय मेरा पहला कदम प्रत्येक स्पष्ट ऊँचाई या चौड़ाई को निकालना है जो मैं पा सकता हूं।
4. विंडो SizeToContent है जब यह नहीं होना चाहिए
जब आप SizeToContent का उपयोग करते हैं, तो आपकी सामग्री न्यूनतम आकार तक निचोड़ ली जाएगी। कई अनुप्रयोगों में यह बहुत उपयोगी है और सही विकल्प है। लेकिन अगर आपकी सामग्री का कोई "प्राकृतिक" आकार नहीं है, तो आप शायद SizeToContent को छोड़ना चाहेंगे।