हमारे उत्पाद में, हम एमवीवीएम मॉडल का पहला दृष्टिकोण उपयोग करते हैं और यह अच्छी तरह से काम करता है लेकिन एक चेतावनी के साथ। जब दृश्य जटिल हो जाता है तो इसे डेटा टेम्पलेट से बनाने में समय लगता है। यदि दृश्य अक्सर दिखाया जाता है और छुपाया जाता है, तो यह थोड़ा परेशान हो जाता है। यदि पहले दृश्य का उपयोग करना है, तो आवश्यक होने पर दृश्य को कैश करना काफी आसान होगा - लेकिन डेटा टेम्पलेट और मॉडल का उपयोग करते समय, हमारे पास दृश्य निर्माण का अधिक नियंत्रण नहीं है। किसी ने भी इस समस्या को पहले से ही दृश्य में स्विच किए बिना हल किया है?मॉडल के पहले दृष्टिकोण का उपयोग करते समय दृश्य को कैश करना संभव है?
उत्तर
व्यूमोडेल के पहले दृष्टिकोण के साथ मुझे लगता है कि आपको दृश्य को "कैश" करने का कोई मौका नहीं है। इसलिए आप हेवीवेट डेटामैट्स वर्कफ़्लोज़ के लिए पहले दृश्य और व्यूमोडेल लोकेटर का उपयोग करने पर विचार कर सकते हैं। here सूचियों के साथ डेटामैप्लेट का उपयोग करते समय एक समाधान है।
लेकिन शायद wpf डेटामैप्लेट तंत्र को ओवरराइड करने के साथ कोई समाधान है?
संपादित करें: यदि आप अपने व्यूमोडेल के लिए केवल "मार्कर्विव" बनाते हैं, तो wpf डेटामैप्लेट इसे ढूंढ सकता है। और फिर इस मार्कर दृश्य के भीतर आप वास्तविक दृश्य को बना/पुनर्निर्मित करते हैं? एक दृश्य सेवा लोकेटर की तरह कुछ?
@blindmeis विचार का उपयोग करते हुए खूबसूरती से काम करता है।
समग्र नुस्खा:
एक ContentControl या UserControl नामित ViewCache बनाएँ:
public partial class ViewCache
{
public ViewCache()
{
InitializeComponent();
Unloaded += ViewCache_Unloaded;
}
void ViewCache_Unloaded(object sender, RoutedEventArgs e)
{
Content = null;
}
private Type _contentType;
public Type ContentType
{
get { return _contentType; }
set
{
_contentType = value;
Content = ViewFactory.View(value); // use you favorite factory
}
}
}
DataTemplate में, ViewCache उपयोग करते हैं, वास्तविक दृश्य के प्रकार आप उपयोग करना चाहते पारित:
<Window.Resources>
<DataTemplate DataType="{x:Type TestViewCache:Foo}">
<TestViewCache:ViewCache ContentType="{x:Type TestViewCache:View }"/>
</DataTemplate>
</Window.Resources>
<StackPanel>
<ContentPresenter Height="200" Width="300"
Content="{Binding ViewModel}"/>
<Button Content="Set VM" Click="SetVMClick"/>
<Button Content="UnSet VM" Click="UnSetVMClick"/>
</StackPanel>
धन्यवाद लेकिनलिखना बेहतर होगाvar नियंत्रण = नियंत्रण के रूप में देखें; नियंत्रण। डेटाकॉन्टेक्स्ट = डेटाकॉन्टेक्स्ट; सामग्री = दृश्य; –
अरे सर्गेई, मैं दृश्य कैश के लिए एक समाधान की तलाश में था और आपके कार्यान्वयन को मिला। मुझे समझ में नहीं आता कि मैं पैरेंट व्यूमोडेल से दृश्य मॉडल तक कैसे पहुंचूँगा। क्या मुझे 'व्यू कैश' भी एक्सेस करना है? और फिर मुख्य दृश्य मॉडल में दृश्य के परिवर्तन को कैसे लागू किया गया है? – derape
- 1. ओएसजीआई का उपयोग करते समय बाइटकोड मैनिपुलेशन करना संभव है?
- 2. हाइबरनेट ओआरएम का उपयोग करते समय मुझे पहले कक्षा आरेख या डीबी आरेख का मॉडल करना चाहिए?
- 3. मॉडल प्रथम दृष्टिकोण का उपयोग करते समय बीज डेटा कैसे करें?
- 4. मॉडल-प्रथम दृष्टिकोण
- 5. क्या webservice में कैश का उपयोग करना संभव है?
- 6. जावा जेएनआई का उपयोग करते समय कोर डंप को डीबग करना संभव है?
- 7. मैवेन जेटटी का उपयोग करते समय: रन - क्या संकलन चरण को अक्षम करना संभव है?
- 8. sendEmail का उपयोग करते समय पते से बदलना संभव है?
- 9. क्या एएसपी.NET सत्रों का उपयोग करते समय अनुरोध समेकन को मजबूर करना संभव है?
- 10. "आंशिक दृश्य" का उपयोग/उपयोग करते समय सर्वोत्तम प्रथाएं?
- 11. जूमफ़िश का उपयोग करते समय कुछ अनुवाद छोड़ना संभव है?
- 12. TransformToAncestor का उपयोग करते समय त्रुटि: "निर्दिष्ट दृश्य इस दृश्य का पूर्वज नहीं है।"
- 13. क्या Intent.createchooser का उपयोग करते समय .mp3 फ़ाइल की अवधि के साथ फ़िल्टर करना संभव है?
- 14. मुझे दृश्य मॉडल का उपयोग क्यों करना चाहिए?
- 15. गिटहब पेज का उपयोग करना, क्या जैकिल का उपयोग नहीं करते समय रूट वेब निर्देशिका निर्दिष्ट करना संभव है?
- 16. टाइप किए गए दृश्य का उपयोग करते समय ActionFilterAttribute में मॉडल डेटा कैसे सेट करें
- 17. जावा में समय-समय पर ताज़ा कैश को लागू करना
- 18. क्या LINQ स्थगित निष्पादन दृश्य को प्रस्तुत करते समय होता है, या इससे पहले?
- 19. कोर डेटा का उपयोग करते समय जटिल सूचकांक संभव हैं?
- 20. डी: DataContext के साथ XmlDataProvider का उपयोग करना संभव है?
- 21. क्या NSFetchedResultsController का उपयोग करते समय अलग-अलग परिणाम प्राप्त करना संभव है?
- 22. सी # में गैर-एक्सई प्रक्रिया लॉन्च करते समय प्रतिरूपण का उपयोग करना संभव है?
- 23. एंटिटी फ्रेमवर्क कोड का उपयोग करना-पहले मुझे अपने डोमेन एनीमिक का मॉडल होना आवश्यक है?
- 24. phpMyAdmin में लॉगिन करते समय होस्ट निर्दिष्ट करना संभव है?
- 25. स्क्रॉल करते समय "स्नैप-टू" प्रभाव करना संभव है?
- 26. नामित प्रारंभकर्ता का उपयोग करते समय, 'इस' संरचना में पॉइंटर प्राप्त करना संभव है?
- 27. दृश्य का उपयोग करते समय तालिका अनुक्रमणिका कैसे खेलें?
- 28. डिस्क कैश (NSCachesDirectory) से लोड छवियों के साथ UIImage ऑब्जेक्ट्स के सिस्टम कैश का उपयोग करना?
- 29. क्या उपयोगकर्ता नियंत्रण को कैश करते समय आप एकाधिक VaryByCustom पैरामीटर का उपयोग कर सकते हैं?
- 30. कैश के लिए WeakValueDictionary का उपयोग करते समय जीसी के साथ समस्याएं
"मार्कर्व्यू" पर साफ विचार, मैं देखता हूं कि यह काम करता है ... –
मुझे बताएं कि यह काम करता है;) – blindmeis