मैं कॉम्बोबॉक्स में एक बड़ा संग्रह बांधने की कोशिश कर रहा हूं और कॉम्बोबॉक्स के पॉपअप को खोलते समय मुझे प्रदर्शन समस्याओं का सामना करना पड़ा। मैंने इंटरनेट की खोज की और पाया कि वर्चुअलाइजिंगस्टैक पैनेल का उपयोग आइटम पैनल टेम्पलेट के रूप में करने में मदद मिल सकती है, लेकिन इससे केवल आंशिक रूप से मदद मिली। अगर मैं कॉम्बोबॉक्स में एक बड़ा संग्रह बांधता हूं, तो मैं पॉपअप को बहुत तेज़ी से खोल सकता हूं, यह ठीक है, लेकिन अगर उसके बाद मैं एक कॉम्बोबॉक्स में एक और संग्रह बांधता हूं और फिर पॉपअप खोलने की कोशिश करता हूं, तो यह बहुत धीमा हो जाता है। वही हो रहा है यदि आप खाली कॉम्बोबॉक्स के लिए पॉपअप खोलते हैं, तो बड़े संग्रह को बांधें और पॉपअप को फिर से खोलने का प्रयास करें - पॉपअप खुलने से पहले कुछ सेकंड लगते हैं।डब्ल्यूपीएफ कॉम्बोबॉक्स प्रदर्शन बड़े मुद्दों को बाध्य करके
<ComboBox Name="cbBlah">
<ComboBox.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel />
</ItemsPanelTemplate>
</ComboBox.ItemsPanel>
</ComboBox>
और समस्या पुन: पेश करने के लिए बाध्य के लिए नमूना कोड:
var list = new List<string>();
for (var i = 0; i < new Random().Next(9000, 10000); i++)
list.Add(i.ToString());
cbBlah.ItemsSource = list;
मैं ढेर पैनल virtualizing इस तरह देखने के लिए करने की कोशिश की:
<VirtualizingStackPanel VirtualizingStackPanel.IsVirtualizing="True" VirtualizingStackPanel.VirtualizationMode="Recycling" />
यहाँ XAML है
लेकिन यह मदद नहीं करता है, ऐसा लगता है कि वर्चुअलाइजेशन मोड को अनदेखा किया गया है, इसलिए पॉपअप केवल पहली बार बहुत तेज़ खुलता है और फिर, बाध्यकारी परिवर्तन के बाद हर बार, यह बहुत धीमी है।
अद्यतन: मैंने हर बार नए संग्रह को बाध्य करने के बारे में सोचा नहीं था, लेकिन एक बार एक पर्यवेक्षण चयन को बांधें और फिर बस अपनी सामग्री को बदल दें। एक ही बात, जैसे ही संग्रह की सामग्री बदलती है, अभी भी एक पॉपअप खोलने के रूप में कई सेकंड :(
इन सवाल है कि मैं http://stackoverflow.com/a/8555403/920384 – punker76