2010-11-22 21 views
5

वर्चुअलाइजिंग से ट्री व्यू को रोक सकता है यदि TreeView निम्नानुसार स्थापित किया गया है?डब्ल्यूपीएफ: ट्री व्यू वर्चुअलाइजेशन

<TreeView 
    ItemsSource="{Binding}" 
    VirtualizingStackPanel.IsVirtualizing="True"> 
    <TreeView.ItemsPanel> 
     <ItemsPanelTemplate> 
      <VirtualizingStackPanel /> 
     </ItemsPanelTemplate> 
    </TreeView.ItemsPanel> 
    <TreeView.ItemContainerStyle> 
     <Style 
      TargetType="{x:Type TreeViewItem}"> 
      <Setter 
       Property="IsExpanded" 
       Value="{Binding IsExpanded, Mode=TwoWay}"/> 
     </Style> 
    </TreeView.ItemContainerStyle> 
</TreeView> 

मैं एक है कि virtualizing नहीं है, जब मैं (जाँच करने के लिए और उपयोग में तांक-झांक) नोड्स का विस्तार मैं TreeViewItems के सभी बनाया जा रहा है है। मैं सोच रहा हूं कि कंटेनरों का कुछ संयोजन है जो TreeView को अपनी सामग्री को वर्चुअलाइज करने से रोक देगा। (उदाहरण के लिए इसे स्टैकपैनल में होस्ट करना)

+0

यह पोस्ट आभासीकरण अनुकूलन में कुछ मदद की जा सकती है: http://stackoverflow.com/questions/126230/resources-and-guides-to-ui-virtualization-in-wpf – Domokun

उत्तर

5

समस्या स्टाइल के साथ थी। कुछ शोध के बाद हमने पाया कि ट्री व्यू को लक्षित करने वाली एक अज्ञात शैली थी (यानी DataType={x:Type TreeView}x:Key के बिना) और हमारे App.xaml (या समतुल्य) में TreeViewItem को लक्षित करने वाला यह क्रमशः प्रत्येक के लिए ControlTemplate ओवरराइड कर रहा था।

इन शैलियों में ItemsPanel को VirtualizingStackPanel पर सेट करने के लिए ट्रिगर्स नहीं थे और किसी भी वर्चुअलाइजेशन का कोई उल्लेख नहीं था। जब शैलियों को हटा दिया जाता है तो TreeView ठीक काम करता है। हालांकि स्थानीय गुण ItemsPanel और TreeView इन गुणों पर VirtualizingStackPanel.Isvirtualizing="True" सेट TreeViewItems को propogated नहीं किया जा रहा था तो TreeView के शीर्ष स्तर उप श्रेणियों जबकि virtualize नहीं (के रूप में अपने वर्चुअलाइजेशन व्यवहार TreeViewItem पर निर्भर था)

होगा
संबंधित मुद्दे