चलो कुछ सार ViewModel आधार कक्षा में कहते हैं कि मैं एक सादे पुराने संपत्ति के रूप में इस करते हैं:परिवर्तन सूचना
public Size Size
{
get { return _size; }
set
{
_size = value;
OnPropertyChanged("Size");
}
}
मैं तो बनाने के एक अधिक विशिष्ट ViewModel, पिछले एक, जिसमें से इनहेरिट निम्नलिखित संपत्ति:
public Rect Rectangle
{
get { return new Rect(0, 0, _size.Width, _size.Height); }
}
अब, कुछ वर्ग दृश्य में मैं ऊपर उल्लिखित ViewModel के Rectangle
संपत्ति के लिए बाध्य। सब कुछ ठीक काम करता है, जब तक कि मैं आकार बदल नहीं जाता। जब Size
परिवर्तन, Rectangle
इसके बारे में नहीं पता है और परिवर्तन दृश्य को प्रसारित नहीं करता है। और Rectangle
बच्चे वर्ग में है, इसलिए मैं OnPropertyChanged("Rectangle")
को Size
सेटर में बस जोड़ नहीं सकता।
अब कल्पना करें कि मेरे पास Rectangle
जैसी कई अलग-अलग गुण हैं, जो सभी बेस-क्लास गुणों पर निर्भर करते हैं, और इनमें से कोई भी परिवर्तन प्रचारित नहीं किया जा रहा है। मुझे परिवर्तन अधिसूचनाओं को चुनने के कुछ हल्के और सुरुचिपूर्ण तरीके की ज़रूरत है, अधिमानतः एक जिसे बहुत सारे कोड की आवश्यकता नहीं होती है और मुझे निर्भरता गुणों का उपयोग करने में मजबूर नहीं करती है।
स्पष्ट रूप से यहां बहुत सारे बदसूरत समाधान हैं- जो मैं ढूंढ रहा हूं वह कुछ साफ और चालाक है। ऐसा लगता है कि यह एक बहुत ही आम परिदृश्य होगा, और ऐसा लगता है कि ऐसा करने के लिए एमवीवीएम-अनुकूल हो सकता है।
महान विचार। मैंने इसे निर्माण समय (प्रदर्शन कारणों के लिए) में एक शब्दकोश बनाने के लिए थोड़ा सा बदल दिया, लेकिन अवधारणा ध्वनि है। – Charlie