2009-05-23 12 views
6

मैं इस बात को समझ नहीं सकता कि दृश्य मॉडल को मॉडल में बदलावों के बारे में अधिसूचित करने के तरीके को कैसे प्राप्त किया जा सकता है, बिना आईआईओ विशिष्ट सामग्री जैसे कि आईटोटिफ़प्रॉपरी चेंज और इनोटिफी कोलेक्शन मेरे मॉडल में बदल दिया गया है या कई अलग-अलग घटनाएं बनाते हैं और चीजों का एक गुच्छा करते हैं ऐसा लगता है कि वे यूआई विशिष्ट हैं और मॉडल से बाहर रहना चाहिए।एमवीवीएम में दृश्य-मॉडल के मॉडल और व्यापार तर्क से आप तर्क को कैसे देखते हैं?

अन्यथा मुझे यह सुनिश्चित करने के लिए दृश्य-मॉडल में सभी व्यावसायिक तर्कों को डुप्लिकेट करना होगा, और फिर मॉडल को रखने का क्या मतलब है?

मेरे मॉडल में जो मुश्किल है, उनमें से एक "श्रेणी" वर्ग की संपत्ति है। आप इसे पेड़ की संरचना के रूप में सोच सकते हैं और संपत्ति सभी पत्ते-नोड वंश है। अच्छी तरह से मॉडल में कि संपत्ति अपने सभी बच्चों के माध्यम से फ्लाई पर उत्पन्न होती है, जो कि ठीक है और अच्छा है। दृश्य-मॉडल को हालांकि उस संपत्ति से जुड़ना होगा और यह जानना होगा कि यह कब बदलता है। क्या मुझे दृश्य-मॉडल को समायोजित करने के लिए मॉडल को बदलना चाहिए? यदि मैं करता हूं तो व्यू-मॉडल वास्तव में इस बिंदु पर कुछ भी नहीं करता है, मॉडल परिवर्तन की सभी आवश्यक सूचनाएं उठाता है और दृश्य सीधे मॉडल पर बांध सकता है। अगर मॉडल कुछ ऐसा था, तो मेरे पास स्रोत नहीं था, मैं इसके आसपास कैसे पहुंचूंगा?

उत्तर

8

मुझे असहमत है कि INotifyPropertyChanged और INotifyCollectionChanged यूआई-विशिष्ट हैं। वे नामस्थान और असेंबली में हैं जो किसी विशेष यूआई स्टैक से बंधे नहीं हैं। इसी कारण से, मैं आमतौर पर उस तरह के व्यवहार को सिस्टम में कम करता हूं जैसा कि मैं कर सकता हूं (आमतौर पर डेटा लेयर)।

यदि कोई कारण है कि आप इसे उस स्तर पर नहीं रखना चाहते हैं, तो यह ठीक है। आप इसे उच्च स्तर पर सेवा या यूआई परत में डाल सकते हैं। हालांकि, आपको यह सुनिश्चित करना होगा कि डेटा संरचनाओं में सभी परिवर्तन उस परत के माध्यम से भी होते हैं।

+0

असल में INotifyCollectionChanged System.Collections का हिस्सा है। विशेषीकृत जो WindowsBase.dll में है। मैंने हमेशा यह विषम पाया है। –

+0

अच्छा बिंदु कैमरून। मुझे लगता है कि उतना ही उलझन में है। तदनुसार मेरा जवाब अपडेट कर रहा है ... –

+0

हम्म, मुझे लगता है कि मैंने कभी भी सुना है कि डेटाबेस के उद्देश्यों के लिए डब्ल्यूपीएफ ट्यूटोरियल के लिए वे हैं, लेकिन मुझे लगता है कि WPF के लिए उपयोग किए जाने के अलावा उनके बारे में स्वाभाविक रूप से WPF कुछ भी नहीं है। – Davy8