कैसे एक Stackpanel के लिए एक स्क्रॉल पट्टी जोड़ने के लिए


106

मेरे WPF एप्लिकेशन में, मेरे पास एक स्टैकपैन है जिसमें उनके अंदर कई नियंत्रण हैं। मैं इस स्टैकपैनल में स्क्रॉलबार कैसे जोड़ सकता हूं।

जवाबों:


162

इसे एक में डाल दें ScrollViewer


धन्यवाद। इसके चारों ओर एक स्क्रॉल दृश्य डालने के बाद, संपूर्ण सामग्री दिखाई नहीं देती है। मैंने ऑटो में ऊंचाई और चौड़ाई सेट करने की कोशिश की, लेकिन कोई भाग्य नहीं। केवल एक सीमित भाग ही क्यों दिखाना चाहिए?
शमीम हाफिज

5
मेरे पास कोई सुराग नहीं है। आपका प्रश्न दो वाक्यों का लंबा था जो किसी भी संभावित समस्याओं का पूर्वानुमान लगाने के लिए थोड़ा सा विस्तार है।
जॉय

समझ गया, मैं ओपनिंग टैग गलत जगह लगा रहा था। सहायता के लिए बहुत - बहुत धन्यवाद।
शमीम हाफिज

सरल और सही जवाब।
डेविड पियाओ

94

Stackpanel ने स्क्रॉलिंग तंत्र में निर्माण नहीं किया है, लेकिन आप हमेशा StackPanel को एक स्क्रॉल दृश्य में लपेट सकते हैं

<ScrollViewer VerticalScrollBarVisibility="Auto">
  <StackPanel ... />
</ScrollViewer>

3
खैर, StackPanelकार्यान्वित करता है IScrollInfoऔर स्क्रॉल-संबंधित तरीकों की एक संख्या प्रदान करता है। क्या आप सुनिश्चित हैं कि इसमें किसी भी तरह का "अंतर्निहित" स्क्रॉलिंग तंत्र नहीं है?
या मैपर

4
से msdn.microsoft.com/en-us/library/... ... "यह गुण अपने कोड में उपयोग के लिए नहीं है। यह सार्वजनिक रूप से सामने आ रहा है एक अंतरफलक अनुबंध (IScrollInfo) पूरा करने के लिए। इस गुण को सेट कोई प्रभाव नहीं है। अगर आपको तार्किक स्क्रॉलिंग के बजाय भौतिक स्क्रॉलिंग की आवश्यकता होती है, StackPanel को एक स्क्रॉल-व्यूअर में लपेटें और अपनी CanContentScroll संपत्ति को गलत पर सेट करें। "
स्किनर

11

यह इस तरह काम करता है:

<ScrollViewer VerticalScrollBarVisibility="Visible" HorizontalScrollBarVisibility="Disabled" Width="340" HorizontalAlignment="Left" Margin="12,0,0,0">
        <StackPanel Name="stackPanel1" Width="311">

        </StackPanel>
</ScrollViewer>

TextBox tb = new TextBox();
tb.TextChanged += new TextChangedEventHandler(TextBox_TextChanged);
stackPanel1.Children.Add(tb);

0

क्षैतिज रूप से उन्मुख StackPanel के लिए, स्पष्ट रूप से दोनों स्क्रॉलबार विज़ुअलाइज़ेशन डालने से मेरे लिए क्षैतिज स्क्रॉलबार प्राप्त करने के लिए काम किया।

    <ScrollViewer VerticalScrollBarVisibility="Hidden" HorizontalScrollBarVisibility="Auto" >
        <StackPanel Orientation="Horizontal" />
    </ScrollViewer>

1
पिछले उत्तरों की पुनरावृत्ति।
vapcguy

-4

यदि आपका मतलब है, तो आप अपने स्टैम्पपेल में कई मदों के माध्यम से स्क्रॉल करना चाहते हैं, इसके चारों ओर एक ग्रिड लगाने का प्रयास करें। परिभाषा के अनुसार, स्टैकपैन की अनंत लंबाई होती है।

तो कुछ इस तरह की कोशिश करो:

   <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
        <StackPanel Width="311">
              <TextBlock Text="{Binding A}" TextWrapping="Wrap" Style="{StaticResource PhoneTextExtraLargeStyle}" FontStretch="Condensed" FontSize="28" />
              <TextBlock Text="{Binding B}" TextWrapping="Wrap" Margin="12,-6,12,0" Style="{StaticResource PhoneTextSubtleStyle}"/>
        </StackPanel>
    </Grid>

आप इस काम को स्क्रॉलव्यूअर के साथ भी कर सकते हैं


4
इस कोड को संदर्भ से बाहर ले जाया जाता है। क्या आप निर्भरता को दूर कर सकते हैं, इसलिए कोड और संशोधनों के बिना उपयोग करने योग्य है?
मार्कस जार्डरॉट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.