WPF

2011-05-13 7 views
8

में कुशल लाइव लॉग-व्यूअर मैं WPF में एक कुशल लॉग-व्यूअर नियंत्रण चाहता हूं जो केवल लाइव लॉग दिखाता है क्योंकि संदेश जोड़े जा रहे हैं। लॉग-सिस्टम से अधिसूचनाओं को अपनाने में कोई समस्या नहीं है, लेकिन मुझे चिंता है कि एक लॉग विंडो बड़ी संख्या में लॉग-लाइनों की संख्या बढ़ने के बाद प्रत्येक संलग्न लॉग-लाइन के साथ क्रॉल में आ जाएगी।WPF

लॉग अधिसूचना घटनाएं केवल लॉग स्ट्रिंग (कुछ मेटा के साथ) प्रदान करती हैं जिन्हें मैं टेक्स्टबॉक्स में लाइनों में जोड़ना चाहता हूं या स्क्रॉल बार के समान ही जोड़ना चाहता हूं। बहुत सारी मेमोरी मानते हुए, बड़ी संख्या में लाइनों को जोड़ना एक स्मृति समस्या नहीं होनी चाहिए, लेकिन लाइन नंबर 10,000 जोड़े जाने के बाद मैं सिस्टम को धीमा नहीं करना चाहूंगा।

मुझे लगता है कि स्ट्रिंग एक एमबी आकार और हजारों लाइनों में हो जाने के बाद एक साधारण स्ट्रिंग निर्भरता संपत्ति के लिए टेक्स्टबॉक्स को बाध्यकारी कर देगा।

मैं WPF में कुशलता से ऐसे नियंत्रण कैसे लिख सकता हूं?

+0

संबंधित: [क्या एक है डब्ल्यूपीएफ में लॉग व्यू प्रस्तुत करने का तेज़ तरीका?] (http://stackoverflow.com/questions/430609/what-is-a-fast-way-to-render-a-log-view-in-wpf) – publicgk

उत्तर

11

क्यों एक सूची बॉक्स का उपयोग नहीं करते? एक संग्रह बनाएं जहां आप हर बार अपना लॉग संदेश जोड़ते हैं और बस इस संग्रह को अपने आइटम्स कंट्रोल आइटमसोर्स में बांधें।

संपादित करें: मैं अपनी परियोजनाओं में एक datagrid का उपयोग WCF सेवा से आ रही

EDIT2 संदेश दिखाने के लिए: कुछ Itemsscontrols निम्नलिखित है property जो मदद करनी चाहिए:

<ListBox VirtualizingStackPanel.IsVirtualizing="True" /> 
+0

है पंक्ति संख्या 10,000 जोड़ते समय एक सूची बॉक्स कुशलता से अपडेट हो रहा है? यदि ऐसा है, तो मुझे लगता है कि यह काम करना चाहिए। – Holstebroe

+0

अच्छी तरह से आप अपना संग्रह अपडेट कर रहे हैं लेकिन आइटमसमूह सीधे नहीं :) अपने यूई में आप बस पूरे संग्रह का एक छोटा सबसेट देखते हैं। वर्चुअलाइजिंग कुंजी है। मेरा EDIT2 देखें – blindmeis

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