व्यवहार आप देख रहे हैं WrapPanel
की डिफ़ॉल्ट व्यवहार के रूप में निम्न नमूना से देखा जा सकता है।
<WrapPanel >
<WrapPanel.Resources>
<Style TargetType="{x:Type Rectangle}">
<Setter Property="Width"
Value="80" />
<Setter Property="Height"
Value="80" />
<Setter Property="Margin"
Value="3" />
<Setter Property="Fill"
Value="#4DB4DD" />
</Style>
</WrapPanel.Resources>
<Rectangle Width="150" />
<Rectangle />
<Rectangle />
<Rectangle />
<Rectangle Width="200"/>
<Rectangle />
<Rectangle />
<Rectangle />
<Rectangle Width="220"/>
<Rectangle />
<Rectangle />
</WrapPanel>
निम्नलिखित में से कौन परिणाम पैदा करता है:
आप देख सकते हैं, प्रत्येक आइटम की चौड़ाई सम्मानित किया है।
आपकी समस्या WrapPanel
से Vertical
पर आपके टेम्पलेट में अभिविन्यास सेट करने के कारण होती है। यह बाएं से दाएं की बजाय वस्तुओं को ऊपर से नीचे तक रख रहा है जिसका अर्थ है कि यह Height
संपत्ति है जिसे आपको सेटिंग करने की आवश्यकता है (या आप मेरे उदाहरण में क्षैतिज लेआउट पर वापस लौट सकते हैं)।
अपने आउटपुट की तुलना अपने स्क्रीनशॉट पर करें जहां पैनल क्षैतिज अभिविन्यास पर सेट है; प्रत्येक पंक्ति उच्चतम Rectangle
का आकार है। मेरा विश्वास मत करो? Rectangle's
Height
संपत्ति को एक बड़े मूल्य पर सेट करने का प्रयास करें और आप देखेंगे कि पंक्ति का आकार बढ़ जाएगा और Rectangles
अब लंबवत रेखाबद्ध नहीं होगा।
अपनी टिप्पणी पढ़ना मुझे लगता है कि सबसे अच्छा तरीका है आरंभ करने के लिए निम्न कार्य करने के लिए है:
- एक
WrapPanel
कि क्षैतिज अपनी सामग्री बाहर देता है।
- आइटमों में वर्दी
Height
होना चाहिए।
WrapPanel
के को एक निश्चित आकार में रोकें ताकि आपको ऊर्ध्वाधर स्क्रॉलबार न मिले।
की ऊंचाई अपने WrapPanel
निम्न सूत्र का उपयोग कर बाहर काम किया जाना चाहिए:
((मद की ऊंचाई + शीर्ष मार्जिन + निचला हाशिया) x पंक्तियों की संख्या))
प्रत्येक आइटम की चौड़ाई को थोड़ा सा विचार भी चाहिए ताकि पैनल मेट्रो इंटरफ़ेस (क्षैतिज की बजाय पंक्तिबद्ध) की तरह आइटम को क्षैतिज रूप से बाहर रखे।
दो टाइल आकार हैं; छोटा एक 80px चौड़ा है और बड़ा 166 पीएक्स चौड़ा है। बड़े टाइल की चौड़ाई इस तरह बाहर काम किया है:
(आइटम चौड़ाई * 2) + (बाएं मार्जिन + सही मार्जिन)
यह सुनिश्चित करता है टाइल्स सही ढंग से लाइन अप।
<ScrollViewer HorizontalScrollBarVisibility="Auto"
VerticalScrollBarVisibility="Disabled">
<StackPanel Orientation="Horizontal"
Margin="10,0">
<StackPanel.Resources>
<Style TargetType="{x:Type Rectangle}">
<Setter Property="Width"
Value="80" />
<Setter Property="Height"
Value="80" />
<Setter Property="Margin"
Value="3" />
<Setter Property="Fill"
Value="#4DB4DD" />
</Style>
<Style TargetType="{x:Type WrapPanel}">
<Setter Property="Margin"
Value="0,0,25,0" />
<Setter Property="MaxWidth"
Value="516" />
</Style>
</StackPanel.Resources>
<WrapPanel Height="258">
<Rectangle Width="166" />
<Rectangle />
<Rectangle Width="166" />
<Rectangle />
<Rectangle Width="166" />
<Rectangle />
<Rectangle />
<Rectangle />
<Rectangle />
<Rectangle Width="166" />
<Rectangle />
</WrapPanel>
<WrapPanel Height="258">
<Rectangle />
<Rectangle Width="166" />
<Rectangle />
<Rectangle />
<Rectangle />
<Rectangle />
<Rectangle />
<Rectangle Width="166" />
<Rectangle />
</WrapPanel>
</StackPanel>
</ScrollViewer>
निम्नलिखित में से कौन परिणाम पैदा करता है:
यह आपको एक में फिर से कारक को यह शुरू करने के लिए पर्याप्त जानकारी देना चाहिए
तो अब मेरी XAML कुछ इस तरह दिखता पूर्ण नियंत्रण। यदि आप ऐसा करते हैं तो रख निम्न बातों का ध्यान:
- लेआउट गुणों (छोटे आइटम आकार, बड़े आइटम आकार, अंतराल आदि) नहीं बल्कि मुश्किल से गणना की जानी चाहिए कोडित ताकि आप उदाहरण के लिए, को बदलना चाहते हैं, मार्जिन, लेआउट अभी भी सही तरीके से काम करेगा (आईई टाइल्स अभी भी लाइन अप होगा)।
- मैं प्रदर्शित किए जा सकने वाले 'टाइल्स' की संख्या को सीमित कर दूंगा (वर्तमान उदाहरण में, यदि टाइल्स लेआउट में फिट नहीं होते हैं तो वे आसानी से छुपाए जाते हैं जो शायद आप नहीं चाहते हैं)।
मुझे यकीन है कि आप 'लपेटें' में वस्तुओं की अलग-अलग ऊंचाई/चौड़ाई निर्धारित कर सकते हैं - देखें [यहां] (http://www.codeproject.com/Articles/30904/WPF-Layouts-A- एक उदाहरण के लिए विजुअल-क्विक-स्टार्ट)। क्या आप 'ItemControl' के अंदर 'WrapPanel' का उपयोग करने की तरह कुछ कर रहे हैं? यदि ऐसा है, तो आपको आइटम पर नहीं, 'ItemContainerStyle' में ऊंचाई/चौड़ाई सेट करने की आवश्यकता है (इस आलेख के नीचे देखें] (http://rachel53461.wordpress.com/2011/09/17/wpf- आइटम्स कंट्रोल-उदाहरण /) उदाहरण/स्पष्टीकरण के लिए) – Rachel
पॉइंटर के लिए धन्यवाद, और हाँ मैं 'आइटम कंट्रोल 'के अंदर' लपेटें 'का उपयोग कर रहा हूं। मुझे लगता है कि कुछ और समस्या का कारण बन रहा है। –
यदि 'ItemContainerStyle' में आपकी' ऊंचाई '/ 'चौड़ाई' रखना काम नहीं करता है, तो क्या आप अपना प्रश्न अपने एक्सएएमएल कोड से अपडेट कर सकते हैं? – Rachel