2009-08-21 20 views
21

के लिए स्क्रॉल सक्षम करें क्या कोई मुझे स्क्रॉल करने के लिए वृक्षदृश्य को सक्षम करने में सहायता कर सकता है? एक आसान तरीका होना चाहिए लेकिन मैं इसे अपने कोड में काम नहीं कर सकता। कई की कोशिश करता विफल रहा है के बाद, मैं वर्तमान में कुछ इस तरह है:WPF Treeview

 <ScrollViewer CanContentScroll="True"> 
      <TreeView ...> 
      </TreeView> 
     </ScrollViewer> 

मैं एक 'अक्षम' स्क्रॉलबार देख पा रहे हैं, लेकिन जब treeview के नोट स्क्रीन ऊंचाई से बड़े होते हैं, कोई स्क्रॉल सक्रिय है।

उत्तर

34

TreeView नियंत्रण में अपने टेम्पलेट में ScrollViewer शामिल है। आपको उचित होस्ट के अंदर TreeView का उपयोग करने में सक्षम होना चाहिए (StackPanel नहीं!)।

+3

उचित मेजबान क्या है? हालांकि मेरा वृक्ष दृश्य एक स्टैकपैनल के अंदर रखता है। – Ronald

+0

मुझे लगता है कि वह स्क्रॉलव्यूयर के बारे में बात कर रहा है जो एप्राइपियेट होस्ट नहीं है, क्योंकि "स्टैकपैनल नहीं!" भाग, मुझे वास्तव में यह नहीं मिलता है, यदि आप इसे ग्रिड, स्टैकपैनेल, रैपपैनेल, यूनिफॉर्मग्रिड इत्यादि में उपयोग करते हैं तो ट्री व्यू के व्यवहार में कोई अंतर नहीं होना चाहिए – Carlo

+23

ए 'स्टैकपैनेल' अपनी सामग्री को जो भी चौड़ाई देता है (जब अभिविन्यास क्षैतिज होता है) या ऊंचाई (जब अभिविन्यास लंबवत है) इसके बच्चे पूछते हैं। इस प्रकार, यदि आप 'StackPanel' में 'TreeView' (या' ListBox', या जो भी) डालते हैं, तो 'TreeView' सोचेंगे कि' स्क्रॉलबार 'की आवश्यकता के बिना सभी आइटम प्रदर्शित करने के लिए पर्याप्त ऊंचाई है। वास्तव में, 'ट्री व्यू' काट दिया जाएगा क्योंकि आप स्क्रीन रीयल-एस्टेट से बाहर हो जाएंगे। इसके बजाए 'ग्रिड' का प्रयोग करें। –

2

क्या आपके पास ऊंचाई आपकी ऊंचाई पर स्पष्ट रूप से सेट है? यदि आप स्क्रॉलबार देखना चाहते हैं तो कुछ को TreeView या उसके कंटेनर की ऊंचाई को परिभाषित करना होगा, अन्यथा यह नहीं पता होगा कि इसे स्क्रॉलबार दिखाने की आवश्यकता है।

उदाहरण:

<Window x:Class="StackOverflowTests.Window1" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="Window1" x:Name="window1" Height="300" Width="300"> 
    <Grid> 
     <TreeView Name="treeView1" Height="150" VerticalAlignment="Top"> 
      <TreeViewItem Header="Root" IsExpanded="True"> 
       <TreeViewItem Header="Item 1"></TreeViewItem> 
       <TreeViewItem Header="Item 2"></TreeViewItem> 
       <TreeViewItem Header="Item 3"></TreeViewItem> 
       <TreeViewItem Header="Item 4"></TreeViewItem> 
       <TreeViewItem Header="Item 5"></TreeViewItem> 
       <TreeViewItem Header="Item 6"></TreeViewItem> 
       <TreeViewItem Header="Item 7"></TreeViewItem> 
       <TreeViewItem Header="Item 8"></TreeViewItem> 
       <TreeViewItem Header="Item 9"></TreeViewItem> 
       <TreeViewItem Header="Item 10"></TreeViewItem> 
       <TreeViewItem Header="Item 11"></TreeViewItem> 
       <TreeViewItem Header="Item 12"></TreeViewItem> 
       <TreeViewItem Header="Item 13"></TreeViewItem> 
       <TreeViewItem Header="Item 14"></TreeViewItem> 
       <TreeViewItem Header="Item 15"></TreeViewItem> 
       <TreeViewItem Header="Item 16"></TreeViewItem> 
       <TreeViewItem Header="Item 17"></TreeViewItem> 
       <TreeViewItem Header="Item 18"></TreeViewItem> 
       <TreeViewItem Header="Item 19"></TreeViewItem> 
       <TreeViewItem Header="Item 20"></TreeViewItem> 
       <TreeViewItem Header="Item 21"></TreeViewItem> 
       <TreeViewItem Header="Item 22"></TreeViewItem> 
       <TreeViewItem Header="Item 23"></TreeViewItem> 
       <TreeViewItem Header="Item 24"></TreeViewItem> 
       <TreeViewItem Header="Item 24"></TreeViewItem> 
      </TreeViewItem> 
     </TreeView> 
    </Grid> 
</Window> 
+0

क्षमा करें, ट्रीव्यू और उसके कंटेनर में ऊंचाई जोड़ने की कोशिश की लेकिन सफलता के बिना – Ronald

+0

हमम मुझे स्क्रॉल बार मिला, मैं अपने उत्तर में अपना उदाहरण जोड़ूंगा, देखें कि यह काम करता है, मूल रूप से खिड़की की ऊंचाई 300 पर सेट होती है और वृक्षदृश्य की ऊंचाई 150 पर सेट की गई है, इसलिए वृक्षदृश्य खिड़की के रूप में आधा लंबा है और इसकी वस्तुओं को ऊंचाई पर बहने पर स्क्रॉल बार मिलता है। – Carlo

+0

मैंने ग्रिड में ऊंचाई जोड़ दी और यह काम किया। –

6

TreeView एक ScrollViewer शामिल है, लेकिन के रूप में @Carlo कहा, TreeView या अपने कंटेनर की ऊंचाई की जरूरत है। वैकल्पिक रूप से, ट्री व्यू को एक कंटेनर में होस्ट किया जाना चाहिए जो अपने बच्चों को अनंत ऊंचाई नहीं देता है (यानी एक स्टैकपैनल जो मुझे लगता है कि @ केंट का अर्थ था)। तो इसे ग्रिड के अंदर रखें, ग्रिड या ट्री व्यू को एक स्पष्ट ऊंचाई देने की आवश्यकता नहीं है और आपको स्क्रॉलबार प्राप्त करना चाहिए।

0

वृक्ष दृश्य के बजाय आप विस्तारक का उपयोग कर सकते हैं। जो स्क्रॉल दृश्य के साथ ठीक से काम कर सकता है यह कार्य Treeview के समान ही है।

0

यह ट्री व्यू को एक निश्चित ऊंचाई और चौड़ाई देने का एक मामला है। और शायद इसे एक सीमा में डाल दिया। इसके अलावा, मेरे पास मेरी वस्तुओं की सामग्री पर मैक्सविड्थ है। उदाहरण के लिए निम्न दो ढेर पैनलों के तहत मेरी मुख्य विंडो में है और यह काम करता (मैं MahApps मेट्रो नियंत्रण का उपयोग कर रहा हूँ):

<StackPanel Orientation="Horizontal" HorizontalAlignment="Center"> 
     <Border BorderThickness="2" BorderBrush="DarkGoldenrod" Margin="4"> 
     <TreeView x:Name="TreeView" Width="400" Height="800" Focusable="True" VerticalAlignment="Top"> 
     </TreeView>    
    </Border> 
</StackPanel> 
0

कैसे सिर्फ एक निश्चित राशि के लिए ऊंचाई और चौड़ाई की स्थापना के बारे में? मुझे पता है कि यह हर किसी के लिए जवाब नहीं हो सकता है।

+1

जहां तक ​​मैं कह सकता हूं, यह * सभी * प्रश्न का उत्तर नहीं देता है। * क्या * की ऊंचाई और चौड़ाई तय की जानी चाहिए? और यह स्क्रॉल बार को कैसे सक्षम करेगा? –

+0

कृपया फिर से प्रश्न पढ़ें। "मुझे एक 'अक्षम' स्क्रॉलबार दिखाई देता है, लेकिन जब पेड़ दृश्य के नोट स्क्रीन की ऊंचाई से बड़े होते हैं, तो कोई स्क्रॉलिंग सक्रिय नहीं होती है।" वृक्षदृश्य पर ऊंचाई और चौड़ाई निर्धारित करना। यह वास्तव में उपरोक्त पद में उल्लेख किया गया है। यदि मुझे बिल्कुल याद है, तो पेड़दृश्य पर ऊंचाई और चौड़ाई तय हो जाने पर, मुख्य विंडो का आकार बदलने पर स्क्रॉलबार दिखाई देते हैं। –

संबंधित मुद्दे