- मुझे कैसे पता चलेगा कि मेरी सूची वर्चुअलाइज की जा रही है या नहीं?
मैं इस स्निपेट वर्चुअलाइज्ड कैसे बना सकता हूं?डब्ल्यूपीएफ: सूची बॉक्स और वर्चुअलाइजेशन
<ScrollViewer Grid.Column="1" Name="LogScroller"> <r:NoInheritanceContentControl> <ListBox Background="Black" ItemsSource="{Binding Path=ActiveLog}" > <ListBox.ItemTemplate> <DataTemplate> <Grid Background="Black"> <Grid.ColumnDefinitions> <ColumnDefinition Width="200"></ColumnDefinition> <ColumnDefinition Width="*"></ColumnDefinition> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition></RowDefinition> <RowDefinition></RowDefinition> </Grid.RowDefinitions> <TextBlock Grid.Column="0" Grid.Row="0" Foreground="White"> <TextBlock >Date:</TextBlock> <TextBlock Text="{Binding Path=LogDate}"/> </TextBlock> <TextBlock Grid.Column="1" Grid.Row="0" Foreground="White"> <TextBlock >Severity:</TextBlock> <TextBlock Text="{Binding Path=Severity}"/> </TextBlock> <TextBlock Grid.Column="0" Grid.ColumnSpan="2" Grid.Row="1" Foreground="LightGray" Text="{Binding Path=Message}"></TextBlock> </Grid> </DataTemplate> </ListBox.ItemTemplate> <ListBox.Template> <ControlTemplate> <StackPanel Background="Black" IsItemsHost="True" > </StackPanel> </ControlTemplate> </ListBox.Template> </ListBox> </r:NoInheritanceContentControl> </ScrollViewer>
उत्तर
आपका कोड नमूना वर्चुअलाइज नहीं करता है क्योंकि आप StackPanel
के उपयोग को मजबूर कर रहे हैं। आपको VirtualizingStackPanel
का उपयोग करना होगा।
According to the MSDN forums, All databound listboxes are virtualized
आप देख सकते हैं क्या Snoop उपयोग करके आपके एप्लिकेशन में हो रहा है - अपने लिस्टबॉक्स (या वस्तुओं में से एक) पर माउस और गुणों को देखो। उनमें से एक VirtualizingStackPanel.IsVirtualizing
है - अगर सूची आभासी है यह जाँच की जाएगी, और यदि नहीं
क्या आपके पास परीक्षण के लिए अन्य कार्यक्रम हैं? दुर्भाग्य से स्नूप .NET 4. –
के साथ काम नहीं करता है, इसके अलावा, मैंने कहीं और पढ़ा है कि ListBoxes केवल डिफ़ॉल्ट रूप से वर्चुअलाइज करते हैं। एक बार जब आप सामान को ओवरराइड करना शुरू कर देते हैं, तो आप प्रभाव खो सकते हैं। –
@ जोनाथन एलन (या क्या आप इसे अंतरिक्ष के कारण @ जोनाथन-एलन लिखते हैं?) स्नूप अब .NET 4.0 का समर्थन करता है। (हाँ मुझे पता है कि यह बहुत पुराना है, लेकिन हे ... कुछ लोग नहीं जानते!) – MarqueIV
अगर यह तो आप बस संग्रह करने के लिए 10K डमी प्रविष्टियों जोड़ सकते हैं और देखते हैं कितनी तेजी से लोड हो रहा है और साथ ही होता है सकते हैं वर्चुलाइज़ है पता करने के लिए अनियंत्रित वर्टिकल स्क्रॉल कितनी तेजी से काम करता है जो स्पष्ट रूप से एक बड़ा अंतर बताएगा। मुझे लगता है कि आपको नियंत्रण टेम्पलेट में VirtualizingStackPanel
पर अपना StackPanel
बदलने की आवश्यकता है।
मैं निश्चित रूप से कोशिश करूँगा, लेकिन # 1 के जवाब के बिना मुझे नहीं पता कि यह काम करता है या नहीं। –
आपको पता चलेगा कि यह नहीं है। –
- यदि आप निश्चित रूप से जानना चाहते हैं। Snoop डाउनलोड करें इसमें एक 3 डी व्यू है जिसे आप प्रस्तुत किए गए प्रत्येक तत्व को देखने के लिए उपयोग कर सकते हैं। (स्क्रीन पर और बंद) यदि आपका लिस्ट बॉक्स वर्चुअलाइज्ड नहीं है तो आप पेज 3 को एक सुंदर 3 डी व्यू में पेज से बाहर करने वाली सभी सूची आइटम देखेंगे।
यह WPF डेवलपर के लिए एक अनिवार्य उपकरण है, क्योंकि यह अन्य वास्तव में आसान सुविधाओं की एक जोड़ी के रूप में अच्छी तरह से
-
एक का उपयोग करता है
- कि सूची बॉक्स टेम्पलेट से छुटकारा कि है ढेर पैनल यदि यह सब कुछ कर रहा है तो पृष्ठभूमि को काला बना रहा है, फिर बस पृष्ठभूमि को काला सेट करें।
यदि मैं टेम्पलेट शामिल नहीं करता हूं तो माउस पर स्क्रोल व्हील काम नहीं करता है। मैंने इसे वर्चुअलाइजिंगस्टैक पैनेल में बदल दिया। –
मेरी इच्छा है कि मैं स्नूप का उपयोग कर सकूं, लेकिन मैं इसे .NET 4 के खिलाफ काम नहीं कर सकता। –
एक नोटफैयर नॉनसोनोप कार्यान्वित अपवाद()) फेंक दें: –
लिंक [बीए.स्टॉलनिट्ज़ ब्लॉग] (http://bea.stollnitz.com/blog /), अब प्रश्न के लिए प्रासंगिक प्रतीत नहीं होता है। मुझे संदेह है कि जानकारी चली गई है। –