2017-02-09 11 views
7

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

क्या कोई इसे हल करने के तरीके के बारे में जानता है?

किसी भी मदद की सराहना की जाती है।

नीचे TreeView Xaml के प्रासंगिक अनुभाग:

 <TreeView ItemsSource="{Binding Folders.ObservableTree}" Name="FoldersTreeView" 
       AutomationProperties.AutomationId="foldersview_treeview_folders" TabIndex="0" PreviewMouseRightButtonDown="OnPreviewMouseRightButtonDown" 
       VirtualizingStackPanel.CleanUpVirtualizedItem="VirtualizingStackPanel_OnCleanUpVirtualizedItem" 
       ScrollViewer.VerticalScrollBarVisibility="Auto" 
       ScrollViewer.IsDeferredScrollingEnabled ="True" 
       VirtualizingStackPanel.IsVirtualizing="True" 
       ScrollViewer.HorizontalScrollBarVisibility="Disabled" 
       VirtualizingStackPanel.ScrollUnit="Pixel" 
       VirtualizingStackPanel.VirtualizationMode="Standard" 
       VirtualizingPanel.IsVirtualizingWhenGrouping="True" 
       VirtualizingStackPanel.CacheLengthUnit="Item"> 

     <TreeView.ItemsPanel> 
       <ItemsPanelTemplate> 
       <VirtualizingStackPanel IsItemsHost="True" CanVerticallyScroll="True"/> 
      </ItemsPanelTemplate> 
      </TreeView.ItemsPanel> 
     <TreeView.Template> 
      <ControlTemplate> 
       <view:ScrollViewer2 Padding="{TemplateBinding Control.Padding}" Focusable="False" Name="TreeViewScrollViewer" 
           CanContentScroll="True"> 
        <ItemsPresenter SnapsToDevicePixels="{TemplateBinding UIElement.SnapsToDevicePixels}" /> 
       </view:ScrollViewer2> 
      </ControlTemplate> 
     </TreeView.Template> 
+0

क्या आपको इस पर कोई समाधान मिला है? – Yvonnila

+0

दुर्भाग्यवश मैंने नहीं किया है, मैंने DevExpress TreeListView के साथ नियंत्रण को बदल दिया है क्योंकि हमारे पास इसकी सदस्यता है, इसने कुछ अनुकूलन में बनाया है और अच्छी तरह से प्रदर्शन करता है। – Sjblack

उत्तर

0

वर्चुअलाइजेशन केवल अच्छी तरह से काम करता है ItemsPresenter में सभी आइटम (और एक TreeView नेस्टेड ItemsPresenters के साथ एक ItemsPresenter के रूप में कार्यान्वित किया जाता है) करता है, तो एक ही ऊंचाई की है। TreeView के साथ आमतौर पर यह मामला नहीं है।

VirtualizationStackPanel समझेंगे सभी बच्चों को एक ही ऊंचाई के रूप में वर्तमान में दृश्यमान बच्चे हैं और अनुमान लगाएगी:

इसके लिए मुख्य कारण यह है कि क्योंकि यह virtualizing है, यह कुछ बातें है कि यह अन्यथा बिल्कुल की होगी अनुमान लगाने के लिए किया गया है इस पर आधारित वांछित ऊंचाई (वास्तव में सभी बच्चों को मापने की बजाय), ScrollViewer पर रिपोर्ट की जाएगी, यदि बच्चों की चरम ऊंचाई है, तो यह अनुमान स्क्रॉल स्थिति के आधार पर बंद हो जाएगा और बदलेगा, जिसके परिणामस्वरूप लगातार स्क्रॉलबार का आकार बदलना।

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