2009-12-17 11 views
16

में लिस्टबॉक्स, वर्चुअलाइजिंगस्टैक पैनेल, और चिकना स्क्रॉलिंग मेरे पास ListBox है जिसमें Image समेत टेम्पलेटेड डीबी रिकॉर्ड्स की कई पंक्तियां हो सकती हैं, जो ObservableCollection<MyItem> से जुड़ी हैं। कभी-कभी संग्रह हजारों वस्तुओं को पकड़ सकता है।डब्लूपीएफ

प्रदर्शन बहुत अच्छा है, लेकिन स्क्रॉलिंग डिफ़ॉल्ट अजीब व्यवहार है। मैं इसे चिकनी स्क्रॉलिंग करना चाहता हूं, इसलिए मैंने ScrollViewer.CanContentScroll अनचेक किया।

अब मेरे पास चिकनी स्क्रॉलिंग है, लेकिन प्रदर्शन भयानक है: डेटा को एक अलग थ्रेड में पुनर्प्राप्त किया जाता है, और धागा जल्दी खत्म हो जाता है, लेकिन ListBox में परिणाम दिखाने के लिए 10-20 सेकंड लगते हैं। मुझे लगता है कि ऐसा इसलिए है क्योंकि ScrollViewer.CanContentScroll अनचेकिंग VirtualizingStackPanel को नियमित StackPanel पर बदलता है और इसलिए यह परिणाम प्रदर्शित करने से पहले संपूर्ण संग्रह लोड कर रहा है।

तो मेरा सवाल यह है: मैं VirtualizingStackPanel व्यवहार और प्रदर्शन को बलि किए बिना चिकनी स्क्रॉलिंग को कैसे बनाए रखूं?

+5

http://stackoverflow.com/questions/1977929/wpf-listbox-with-a-listbox-ui-virtualization-and-scrolling/9875475 Virtua lizingPanel.ScrollUnit = "पिक्सेल" – Guillaume

+0

यदि आप थोड़ा हैक का उपयोग करने के लिए तैयार हैं तो आप दोनों चिकनी स्क्रॉलिंग और वर्चुअलाइजेशन कर सकते हैं। विवरण के लिए एक ही प्रश्न के लिए [यह उत्तर] देखें (http://stackoverflow.com/questions/1977929/wpf-listbox-with-a-listbox-ui-virtualization-and-scrolling/9875475#9875475)। –

उत्तर

6

जब आप CanContentScroll को अनचेक करते हैं, तो आप lose virtualization। और इस सवाल का जवाब वास्तव में निराशा होती है: अब कोई बाहर के बॉक्स समाधान :(है

पुनश्च:। यह न पहली पोस्ट यहाँ this very question पूछ है,

+0

मैं उससे डरता था लेकिन पूछना था। मैंने पूछने से पहले खोज की लेकिन उस पोस्ट को नहीं मिला। मैं थोड़ा और अधिक खोद सकता हूं, लेकिन समय सीमित है इसलिए मुझे अब के लिए चिकना स्क्रॉलिंग खोना होगा। –

3

आप .NET 4.5 का उपयोग करते हैं। (या 4.0 यदि आप थोड़ा हैक करना चाहते हैं) तो एक जवाब over here है।

[कि नोट @ Guilluame की टिप्पणी यहाँ इस जवाब से पहले रास्ता नहीं था, लेकिन यह विशेष रूप से दृश्यमान जब जवाब के लिए स्कीम नहीं था।]

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