मैं कई नियंत्रण लंबवत (यानी शीर्षक, उप शीर्षक, सूची बॉक्स, विभाजक, सूची बॉक्स, आदि) लेआउट के लिए एक स्टैकपैनल का उपयोग कर रहा हूं।स्टैकपैनल में विशाल सूची बॉक्स के लिए प्रदर्शन में सुधार?
स्टैकपैनल स्क्रॉलव्यूयर का एक बच्चा है यह सुनिश्चित करने के लिए कि इसकी सामग्री हमेशा स्क्रॉल करने योग्य है।
स्टैकपैनल में से एक नियंत्रण एक सूची बॉक्स है।
इसका आइटमसोर्स डेटा एक विशाल संग्रह से जुड़ा हुआ है, और प्रत्येक आइटम को समझने के लिए एक जटिल डेटा टेम्पलेट का उपयोग किया जाता है।
दुर्भाग्यवश, मुझे इसके साथ वास्तव में खराब प्रदर्शन (उच्च सीपीयू/मेमोरी) मिल रहा है।
मैंने कोशिश की
- एक VirtualizingStackPanel को ListBox के ItemsPanel की स्थापना, और
- केवल एक ItemsPresenter करने के लिए अपने ControlTemplate अधिभावी (ListBox के ScrollViewer निकालने के लिए)।
लेकिन प्रदर्शन में कोई अंतर नहीं था। मुझे लगता है कि स्टैकपैनल माप के दौरान अपने आंतरिक बच्चों को अनंत ऊंचाई देता है?
जब मैंने स्क्रॉलव्यूयर और स्टैकपैनल को अन्य पैनल/लेआउट (उदाहरण के लिए, ग्रिड, डॉकपैनेल) के साथ बदल दिया और प्रदर्शन में काफी सुधार हुआ, जिससे मुझे बाधा, विश्वास के साथ-साथ समाधान, आभासीकरण में विश्वास होता है।
क्या इस दृश्य के सीपीयू/मेमोरी प्रदर्शन को बेहतर बनाने के लिए मेरे पास कोई तरीका है?
[अपडेट 1]
मूल नमूना परियोजना: http://s000.tinyupload.com/index.php?file_id=29810707815310047536
[अपडेट 2]
मैं restyling/templating TreeView/TreeViewItems की कोशिश की के साथ आने के लिए निम्नलिखित उदाहरण। यह अभी भी उच्च स्मृति उपयोग शुरू करने के लिए एक लंबा समय लगता है। लेकिन एक बार लोड होने पर, स्क्रॉलिंग मूल नमूना से बहुत अधिक प्रतिक्रियाशील महसूस करती है।
आश्चर्य है कि स्टार्ट अप समय/मेमोरी उपयोग को और बेहतर करने के लिए कोई और तरीका है?
जिसका ढांचा TreeView परियोजना: http://s000.tinyupload.com/index.php?file_id=00117351345725628185
[अद्यतन 2]
pushpraj समाधान एक आकर्षण
- मूल की तरह काम करता है:
- स्टार्टअप: 35s,
- मेमोरी : 3 9 3 एमबी
- स्क्रॉल: धीरे
- TreeView:
- स्टार्टअप: 18s,
- मेमोरी 377MB,
- स्क्रॉल: फास्ट
- pushpraj के समाधान:
- स्टार्टअप : < 1s,
- मेमोरी: 20MB,
- स्क्रॉल: फास्ट
लिस्टबॉक्स की अधिकतम ऊंचाई फिक्सिंग पर किसी भी डिजाइनर चेतावनी 2 स्क्रॉलबार कारण (http://i.imgur.com/s1MJ6BO.png?1 देखें) प्रकट करने के लिए होता है आप सुरक्षित रूप से अनदेखा कर सकते हैं – jayars
जो सत्य है, लेकिन साथ ही वर्चुअलाइजेशन केवल तभी काम कर सकता है जब ऊंचाई तय हो या अधिकतम ऊंचाई परिभाषित हो, यह असीमित ऊंचाई के लिए काम नहीं कर सकती है। आप शायद संयुक्त संग्रह का उपयोग स्टैकपैन में सभी आइटमों को गठबंधन कर सकते हैं और वर्चुअलाइजेशन सक्षम के साथ उन सभी को सूची बॉक्स में प्रदर्शित कर सकते हैं। क्या आप कोड साझा कर सकते हैं, मैं इसके साथ आपकी सहायता करने की कोशिश करूंगा। – pushpraj
नमूना प्रोजेक्ट – jayars