2009-10-26 13 views
11

नीचे दिए गए उदाहरण (WPF/XAML) केवल स्क्रीन बंद परेड में लेबल, कोई रैपिंग होता है के साथ एक StackPanel में लपेटकर नहीं WrapPanel जब। अभिविन्यास कार्यों को हटा रहा है, लेकिन आवश्यक कार्यक्षमता/देखो & महसूस नहीं करता है। WrapPanelStackPanel के वर्तमान आकार में लपेटने के लिए कोई विचार कैसे?क्षैतिज अभिविन्यास

<Window Height="300" Width="600"> 
    <StackPanel Orientation="Horizontal"> 
     <WrapPanel> 
      <Label Height="28" Name="label1" Width="120">First Name</Label> 
      <Label Height="28" Name="label2" Width="120">John</Label> 
      <Label Height="28" Name="label3" Width="120">Last Name</Label> 
      <Label Height="28" Name="label4" Width="120">Smith</Label> 
      <!-- ...more labels!... --> 
     </WrapPanel> 
     <!-- ...other controls/panels... --> 
    </StackPanel> 
</Window> 

उत्तर

21

आप बाध्य कर सकते हैं WrapPanel के MaxWidth करने के लिए StackPanel के ActualWidth

+0

जब आप बाध्य कहते हैं, ऐसा लगता है कि यह स्वचालित रूप से होगा? यह कैसे करेगा? – derGral

+4

मैंने यह कोशिश नहीं की है, लेकिन मूल रूप से: NotDan

+0

ऐसा लगता है; धन्यवाद! समस्या यह है कि स्टैकपैन में अन्य चीजें हैं और उनकी चौड़ाई को ध्यान में नहीं रखा जाता है। इसे संभालने के लिए कोई विचार? – derGral

6

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

आप या तो करने की आवश्यकता होगी:

  1. WrapPanel पर एक Width या MaxWidth सेट करें।
  2. StackPanel के स्थान पर बाहरी पैनल के रूप में WrapPanel का उपयोग करें।