2011-01-10 14 views
5

मेरे पास एक WPF विंडो है जिसमें लगभग 200 नियंत्रण (बटन से व्युत्पन्न) वाली फैंसी छवि होती है, जिनमें से सभी मेरे 5 टेम्पलेट्स (पथ, छाया प्रभाव इत्यादि) का उपयोग करते हैं।)। सहमत है, यह आकर्षित करने के लिए एक भारी खिड़की है। में इसके साथ जी सकता हूँ।बहुत सारे नियंत्रण वाले विंडो का आकार बदलने पर WPF प्रदर्शन समस्या

मेरी समस्या खिड़की का आकार बदलने से आता है। अधिकतम/पुनर्स्थापित करें लगभग 1-2 सेकंड लें, लेकिन नीचे-बाएं कोने को मैन्युअल रूप से खींचने से सिस्टम को लगभग 5-10 सेकंड तक लटका दिया जा सकता है। उस देरी में, खिड़की काला है & अंतिम परिणाम दिखाए जाने तक आंशिक बचे हुए हैं। यह शौकिया दिखता है और कि, मैं साथ नहीं रह सकता।

रिमोट कनेक्शन: रिमोट अकाउंट का उपयोग करके, मैंने पाया कि खिड़की का आकार हमेशा 1-2 सेकंड लेता है, लेकिन जब मैं खिड़की सीमाओं को खींच रहा हूं तो "इंटरमीडिएट" चरण नहीं खींचता है। नतीजा उतना ही दुखी है जितना मैं उम्मीद करता हूं।

मेरा निष्कर्ष यह है: यह के दौरान बाधाओं का आकार बदलता है।

अनिवार्य प्रश्न यह है: आकार बदलने तक मैं खिड़की को फिर से खींचना कैसे रोक सकता हूं?

किसी भी विचार के लिए अग्रिम धन्यवाद ...

+0

+1 एक अच्छे प्रश्न के लिए भले ही आपके पास 200 नियंत्रण हैं जो अच्छा नहीं है। :) –

+0

धन्यवाद;) यह खराब डिजाइन की तरह लगता है, लेकिन यह वास्तव में एक बहुत ही जटिल इंटरफ़ेस है। रॉकेट विज्ञान, तो बोलने के लिए। – Seb

+0

"अनिवार्य प्रश्न यह है: आकार बदलने के बाद तक मैं खिड़की को फिर से खींचना कैसे रोक सकता हूं?" -मोमोटे डेस्कटॉप ;-) – Firoso

उत्तर

4

@Seb: मुझे लगता है के लिए WPF इंटरफेस है कि एक समय

पर 2-3 से आगे नियंत्रण जाना लिए नहीं बनाया गया है शुरुआत कर रहा हूँ

विजुअल स्टूडियो 2010 और अभिव्यक्ति मिश्रण अच्छा counterexamples होना चाहिए। हालांकि विजुअल स्टूडियो कभी-कभी बाधा को फ्रीज करता है निश्चित रूप से डब्ल्यूपीएफ प्रतिपादन में नहीं होता है।

@Seb: कैसे मैं खिड़की redrawing जब तक आकार समाप्त हो गया है रोका जा सकता है: अपरिहार्य सवाल है?

बस आकार/अधिकतम करने से पहले विंडो की सामग्री दृश्यता Visibility.Collapsed पर सेट करें और बाद में इसे दृश्यमान बनाएं। हालांकि मुझे लगता है कि आपने गलत सवाल पूछा है। यहां एक सही है

मेरे नियंत्रण को मापने/अत्यधिक तेज़ी से व्यवस्थित करने के लिए कैसे करें?

और इसका उत्तर देने के लिए आपको अपना कोड देखना चाहिए। हो सकता है कि आप मापने/व्यवस्था एल्गोरिदम में निर्भरता गुणों का गहन रूप से उपयोग करें? या शायद आपने गलत पैनल चुने हैं (उदाहरण के लिए ग्रिड कैनवास से धीमा है)? या शायद ... मैं यहाँ अनुमान लगा रहा हूँ :)।

वैसे, प्रोफाइलर के तहत अपना ऐप लॉन्च करना हमेशा बेहतर होता है और यह जगह मानने के बजाय बाधा साबित होती है। Eqatec Profiler जांचें यह अभी तक नि: शुल्क शक्तिशाली है। वीएस 2010 भी अच्छी प्रोफाइलिंग सुविधाएं प्रदान करता है, हालांकि यह मुफ़्त होने से बहुत दूर है। और आप WPF Performance Suite जांचना चाहेंगे।

उम्मीद है कि इससे मदद मिलती है।

+0

ठीक है। अंत में आपके दृष्टिकोण का प्रयास करने में कामयाब रहे। हम कुछ महंगे परतों को छुपा रहे हैं और यह बहुत मदद करता है। मुझे लगता है कि हम डब्ल्यूपीएफ को अपनी सीमाओं पर धक्का दे रहे हैं ... जो मैंने सुना है, डॉटनेट 4 और एमएसडीवी 2010 और मिश्रण 4 में ऑप्टिमाइज़ेशन हो सकते हैं जिन्हें हम डॉटनेट 3.5 और एमएसडीवी 2008 और मिश्रण 3 से नहीं प्राप्त कर रहे हैं। हम वहां पहुंचेंगे। आपके इनपुट के लिए धन्यवाद! – Seb

1

मुझे बताएं कि यह कैसे काम करता है ... मुझे लगता है कि आपकी मूल दृश्य वस्तु क्षैतिज और लंबवत तक बढ़ रही है ताकि आपकी खिड़की ऑटो ऊंचाई/चौड़ाई के साथ भर सके। ऑटो ऊंचाई/चौड़ाई से छुटकारा पाएं। ऐप शुरू करने पर मूल तत्व के आयाम सेट करें। एक फ्रेमवर्क एलिमेंट्स में size changed event है।इसके लिए अपने Application.Current.MainWindow पर पंजीकरण करें (शायद एक टाइपो हो, जो स्मृति से था)। जब भी यह घटना आग लगती है, एक छोटे अंतराल के साथ एक टाइमर शुरू करें। यदि टाइमर चल रहा है, तो आपको एक और आकार मिलता है, इसे अनदेखा करें और टाइमर रीसेट करें। एक बार टाइमर आग लगने के बाद, अब आप उपयोगकर्ता के नए आकार को जानते हैं और उनके पास (कम से कम एक छोटी अवधि के लिए) विंडो का आकार बदलना बंद कर दिया है।

आशा है कि मदद करता है!

+0

अच्छा कामकाज, लेकिन हमें आकार बदलने के दौरान कम से कम कुछ दिखाने की ज़रूरत है, अन्यथा उपयोगकर्ता नहीं जानता कि अंतिम परिणाम तब तक होगा जब तक कि वह माउस को रिलीज़ न करे ... मैं इसे ध्यान में रखूंगा। कुछ दिन एक आसान कामकाज साबित हो सकता है। बहुत धन्यवाद। – Seb

0
Ragepotato's answer से

और मोटे तौर पर देखने के लिए इंटरफ़ेस जबकि आकार बदलने की तरह जब तक आप अपने वस्तुओं गतिशील फिर से लगाने के लिए खुद को नहीं है लगेगा, की आवश्यकता होगी, के बारे में अपनी टिप्पणी (जैसे एक Wrap Panel) - आप एक समय लग सकता है विंडो सामग्री का स्क्रीनशॉट और इसके साथ अपना फ्रेम भरें।
इसे ऊंचाई और चौड़ाई दोनों को फैलाने के लिए सेट करें, और आपको एक विशेष आकार क्या होगा इसके बारे में एक (थोड़ा अस्पष्ट) विचार मिलेगा। आकार बदलने के दौरान यह लाइव नहीं होगा, लेकिन उन कुछ सेकंडों के लिए जो शायद कोई फर्क नहीं पड़ता ..

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

  • कोई संबंधित समस्या नहीं^_^