2011-10-28 32 views
10
<Grid.ColumnDefinitions> 
    <ColumnDefinition Width="Auto"/> 
    <ColumnDefinition /> 
</Grid.ColumnDefinitions> 

<Grid.RowDefinitions> 
    <RowDefinition Height="Auto"/> 
    <RowDefinition/> 
    <RowDefinition Height="40"/> 
</Grid.RowDefinitions> 

<c:SearchTextBox Grid.ColumnSpan="2" .../> 

<ScrollViewer VerticalScrollBarVisibility="Auto" Grid.Row="1"> 
    <ListBox 
    ItemsSource="{Binding Categories}" 
    IsSynchronizedWithCurrentItem="True" 
    ... /> 
</ScrollViewer> 

<!-- Here is what I'm talking about:--> 
<ListBox ItemsSource="{Binding Products}" 
    IsSynchronizedWithCurrentItem="True" Grid.Column="1" Grid.Row="1"> 
    <ListBox.ItemsPanel> 
    <ItemsPanelTemplate> 
     <WrapPanel /> 
    </ItemsPanelTemplate> 
    </ListBox.ItemsPanel> 
</ListBox> 

क्या मैं चाहता हूँ कि अधिकार स्तम्भ में आइटम बाहर रखा जाना चाहिए खिड़की चौड़ाई को भरने के लिए, और फिर एक नई लाइन बनाने है एक लंबी क्षैतिज रेखा में आइटम बाहर देता है , वही है जो रैपपैनल के लिए बनाया गया है।
समस्या यह है कि WrapPanel केवल एक पंक्ति में वस्तुओं को बताता है जो नीचे क्षैतिज स्क्रॉल बार दिखा रहा है जबकि सभी आइटम विंडो के आकार से अधिक दाईं तरफ 'छुपा' हैं।WrapPanel (स्क्रॉल बार प्रदर्शित) लपेटकर लाइनों के बजाय

मैं इसे कैसे रोक सकता हूं?

+0

यदि आप स्क्रॉलव्यूअर को हटाते हैं तो क्या होता है? आइटम क्षैतिज स्क्रॉलिंग के साथ अभी भी दाएं विस्तारित हैं? – dcarneiro

+0

@ डैनियल आपको मुझे गलत मिला। स्क्रॉलव्यूयर पहली सूची बॉक्स को लपेटता है जिसमें 2 सूची बॉक्स एक मास्टर-विस्तार परिदृश्य का प्रतिनिधित्व करते हैं। समस्या दूसरी सूची बॉक्स के साथ है जो WrapPanel को इसके आइटमपैनेल टेम्पलेट के रूप में उपयोग करती है। – Shimmy

उत्तर

15

आपको दूसरे सूची बॉक्स अक्षम की क्षैतिज स्क्रॉलबार बनाने की आवश्यकता है।

<ListBox ItemsSource="{Binding}" 
     ScrollViewer.HorizontalScrollBarVisibility="Disabled" ...> 
.... 
</ListBox> 

संपादित

Addtionally, वहाँ कारण यह है कि आप पहली बार ListBox के लिए ScrollViewer उपयोग क्यों करें? मैं क्यों पूछता हूं कि लिस्टबॉक्स में पहले से ही स्क्रॉलव्यूयर है, जिसमें से डिफ़ॉल्ट दृश्यता ऑटो है।

+4

यह स्पष्ट करने के लिए कि ऐसा क्यों होता है, यदि 'ListBox' में क्षैतिज स्क्रॉल बार सक्षम हैं (जो वे डिफ़ॉल्ट रूप से हैं) तो यह अपने बच्चों को अनंत क्षैतिज स्थान में स्वयं को मापने के लिए कहता है। स्क्रॉलबार को हटाकर आप 'रैपपैनेल' को सीमित चौड़ाई का उपयोग करने के लिए मजबूर करते हैं और इसलिए यह वास्तव में लपेट जाएगा। –

+0

@SteveGreatrex: आपकी टिप्पणी के लिए धन्यवाद। –