मेरे पास exactly the same problem था जब मैं पहली बार प्रिज्म के माध्यम से गया था।
Controllers
मूल रूप से तर्क के लिए हैं जो पूरे मॉड्यूल को फैलाता है, जबकि Presenters
View
के लिए विशिष्ट तर्क के लिए हैं।
उदाहरण के लिए, Presenter
एक कमांड का जवाब देगा जिसके परिणामस्वरूप दृश्य में एक बटन अक्षम हो रहा है। Controller
उस आदेश का जवाब देगा जिसके परिणामस्वरूप View
(और Presenter
) पूरी तरह से बदला जा रहा है, या शायद मॉड्यूल के खोल में एक अलग क्षेत्र में एक अलग दृश्य/प्रस्तुतकर्ता लोड कर रहा है।
संपादित करें: जब उनका उपयोग कब किया जाए, तो आप Controller
को पूरी तरह से छोड़ सकते हैं यदि आपको ऊपर वर्णित ऑर्केस्ट्रेशन की आवश्यकता नहीं है। सबसे सरल आवेदन सिर्फ एक होगा:
Module
: पंजीकृत करता Region
Presenter
में देखें/प्रस्तोता: देखने से आदेशों का जवाब और ViewModel
संशोधित करता है।
ViewModel
: एडाप्टर Presenter
और View
को लागू करने वाली INotifyPropertyChanged
View
के बीच: ViewModel
को बांधता है और यूआई प्रदर्शित करता है
संपादित करें: प्रस्तुतकर्ता बनाम ViewModel का सवाल है, अपने तर्क के सबसे अपने प्रस्तुतकर्ता में होना चाहिए। अपने व्यू मॉडेल को अपने विचार के लिए तर्क के रूप में सोचें, लेकिन प्रस्तुतकर्ता दृश्य के साथ बातचीत के परिणामों से निपटने के रूप में सोचें।
उदाहरण के लिए, उपयोगकर्ता आपके View
में "खोज" बटन पर क्लिक करता है। यह ICommand
को ट्रिगर करता है, जिसे आपके Presenter
द्वारा नियंत्रित किया जाता है।Presenter
खोज शुरू करता है और ViewModel.IsSearching
संपत्ति सेट करता है, जो CanSearch
के लिए PropertyChanged अधिसूचना को सक्रिय करता है। CanSearch
एक पठनीय संपत्ति है जो कई अन्य गुणों पर आधारित है (उदाहरण के लिए IsSearchEnabled && !IsSearching
)। View
में "खोज" बटन में Enabled
संपत्ति CanSearch
से जुड़ी है।
स्रोत
2010-03-01 10:10:43
मैं मानता हूँ, चीजों को एक भ्रमित गुस्सा गड़बड़ को दर्शाता है। – Pierreten