बस इस में जोड़ने के लिए, मैं एक ऐसी ही समस्या थी और उस के पीछे कोड में एक टैब आइटम की सामग्री का प्रतिनिधित्व एक उपयोगकर्ता नियंत्रण कैशिंग द्वारा इसे हल करने में कामयाब रहे।
मेरी प्रोजेक्ट में मेरे पास एक टैब नियंत्रण है जो संग्रह (एमवीवीएम) से जुड़ा हुआ है। हालांकि पहला टैब एक सिंहावलोकन है जो सूची दृश्य में अन्य सभी टैब का सारांश दिखाता है। मेरी समस्या यह थी कि जब भी कोई उपयोगकर्ता किसी आइटम टैब से ओवरव्यू टैब पर अपना चयन चलाता है, तो ओवरव्यू सभी सारांश डेटा के साथ फिर से खींचा जाता है, जो संग्रह में आइटम्स की संख्या के आधार पर 10-15 सेकंड ले सकता है। (ध्यान दें कि डीबी या किसी भी चीज़ से वास्तविक डेटा का कोई पुनः लोडिंग नहीं है, यह पूरी तरह से सारांश दृश्य का चित्रण है जो समय ले रहा था)।
जो मैं चाहता था वह सारांश दृश्य की लोडिंग के लिए केवल तब होता है जब डेटा संदर्भ पहले लोड हो जाता है और टैब के बीच किसी भी बाद स्विचिंग तत्काल हो।
समाधान:
वर्ग शामिल: MainWindow.xaml - मुख्य पृष्ठ टैब नियंत्रण से युक्त। MainWindow.xaml.cs - उपरोक्त के लिए कोड पीछे। MainWindowViewModel.cs - उपरोक्त दृश्य के लिए मॉडल देखें, संग्रह शामिल है। Overview.xaml - उपयोगकर्ता नियंत्रण जो ओवरव्यू टैब आइटम सामग्री खींचता है। अवलोकन ViewModel.cs - उपरोक्त दृश्य के लिए मॉडल देखें।
कदम:
'MainWindow में DataTemplate बदलें।XAML 'है कि नाम के एक खाली उपयोगकर्ता नियंत्रण के साथ अवलोकन टैब आइटम ड्रॉ' OverviewPlaceholder MainWindowViewModel.cs अवलोकन 'में'
करने के लिए एक स्थिर संदर्भ जोड़ें '' के भीतर सार्वजनिक 'OverviewViewModel'
के संदर्भ बनाओ ' 'MainWindow.xaml.cs'
उपयोगकर्ता नियंत्रण से भरी हुई घटना के लिए एक ईवेंट हैंडलर जोड़ें 'OverviewPlaceholder', इस विधि के भीतर 'अवलोकन' करने के लिए केवल अगर यह रिक्त है, इस संदर्भ के DataContext सेट स्थिर संदर्भ का दृष्टांत वर्तमान DataContext के भीतर 'OverviewViewModel' संदर्भ (कि 'MainWindowViewModel' है) करने के लिए और जगह धारक की सामग्री सेट 'अवलोकन' के लिए स्थिर संदर्भ होने के लिए।
क्योंकि हर बार भरी हुई है (अर्थात उपयोगकर्ता सिंहावलोकन टैब पर क्लिक करता है) अब अवलोकन पृष्ठ केवल एक बार तैयार की है, यह पृष्ठ पर वापस पहले ही प्रदान की, स्थिर उपयोगकर्ता नियंत्रण रखता है।
मुझे नहीं लगता कि जब भी चयनित TabItems रीलोड उतारे जा रहे हैं/टैब नियंत्रण ch में आइटम anges। मुझे यकीन नहीं है, लेकिन हो सकता है कि आपके TabControl का चयन चेंज तर्क बदलना आवश्यक है ताकि यह हर बार डेटाबेस को फिर से क्वेरी न करे? – ASanch
DataTemplates की भरी हुई/उतार घटनाओं आपके आवेदन, जब भी चयनित टैब में परिवर्तन, यह डेटाबेस से संबंध से चलाता है वस्तु की पुन: प्राप्त करने में हर बार जब मैं टैब बदलने (मैं MVVM डिजाइन पैटर्न का उपयोग कर रहा) चलाने मिल – Rachel
तो, डेटा? – ASanch