2013-05-15 6 views
8

मेरा डेटा रखने के लिए कौन सा बेहतर समाधान है या यह कुछ शर्तों पर निर्भर करता है?बेस्ट प्रैक्टिस ऑब्जर्जेबलकोलेक्शन <Model> बनाम ऑब्जर्जेबलकोलेक्शन <ViewModel>

नमूना स्थिति 1:
आप डेटा जो चयन के बाद एक नई विंडो में संशोधित किया जा सकता की एक सूची प्रदर्शित करने की आवश्यकता है।

नमूना स्थिति 2:
आप डेटा जो इस सूची में संशोधित किया जा सकता की एक सूची प्रदर्शित करने की आवश्यकता है।

उत्तर

10

जैसा कि आप एमवीवीएम का उपयोग कर रहे हैं, आपको ObservableCollection<ViewModel> के साथ जाना चाहिए।

मॉडल को व्यूमोडेल के माध्यम से दृश्य से अलग किया जाना चाहिए।

+3

सुनिश्चित करें लेकिन 'पर्यवेक्षण चयन <>' पहले से ही 'व्यूमोडेल' में है, इसलिए यह पहले से ही 'व्यू' से अलग है या क्या मुझे कुछ याद आती है? – WiiMaxx

+1

@WiiMaxx यह वास्तव में अलग नहीं है, क्योंकि आप अभी भी वास्तव में दृश्य में कक्षा का उपयोग कर रहे हैं। – mattytommo

+0

ओह अच्छा आपत्ति। तो आप बात करते हैं कि यह 2 ऑब्जेक्ट्स बनाने के लिए ओवरहेड नहीं होगा मॉडल-> किसी ऑब्जेक्ट के लिए व्यूमोडेल जो शायद उपयोगकर्ता से कभी भी उपयोग नहीं किया गया है – WiiMaxx

-1

मैं कहूंगा कि ObservableCollection<Model> के साथ जाना है क्योंकि यह ऐसा कुछ है जिसे आप सीधे सूची या डेटाग्रिड से जोड़ सकते हैं।

नमूना स्थिति के लिए 1: मॉडल का चयन करें और फिर उस मॉडल में नई विंडो का डेटा संदर्भ सेट करें।

नमूना स्थिति 2 के लिए: डेटाग्रिड के 2 संपादन बाध्यकारी के संपादन के स्थान पर।

ऑब्जर्वेबल कोलेक्शन एक व्यूमोडेल के अंदर हो सकता है। नीचे दिखाए गए जैसा कुछ।

public class MyViewModel 
{ 
    public ObservableCollection<Model> ListOfItems { get; set;} 
} 
+0

जैसे मैटिटोमो पहले से ही कहता है कि 'व्यू' को मॉडल से अलग किया जाना चाहिए, इसलिए यह 'मॉडल' को 'व्यू मॉडेल' बनाने का चयन करने जैसा होगा, उसे मॉडल दें और इसे 'व्यूमोडेल' को 'डेटाकॉन्टेक्स्ट' – WiiMaxx

+0

के रूप में सेट करें अभी भी उपर्युक्त कार्यान्वयन के साथ आगे बढ़ें क्योंकि इसका मतलब यह होगा कि हमें मॉडल वर्ग में बदलकर INotifyProperty को लागू करने की आवश्यकता है। इससे दृश्य को बांधना आसान हो जाएगा। इस धागे पर एक नज़र डालें: http://stackoverflow.com/questions/6922130/in-mvvm-model-should-the-model-implement-inotifypropertychanged-interface – cvraman

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