2010-03-01 10 views
5

मैं वर्तमान में प्रिज्म (समग्र WPF) प्रोजेक्ट के माध्यम से WPF का उन्नत उपयोग कैसे करना सीख रहा हूं।स्टॉक ट्रेडर आरआई> नियंत्रक, प्रस्तुतकर्ता, डब्ल्यूटीएफ?

निम्न भाग में से प्रत्येक की सही भूमिका क्या है:

मैं कई वीडियो और उदाहरण और डेमो आवेदन StockTraderRI मुझे यह सवाल पूछते बनाता देखते हो?

  • SomethingService: ठीक है, इस डेटा का प्रबंधन करने
  • SomethingView कुछ है: ठीक है, यह क्या दिखाया जाता है
  • SomethingPresentationModel: ठीक है, यह दृश्य एक ViewModel करने के लिए बाध्य करने के लिए (समकक्ष के लिए डेटा और आदेश में शामिल है)।
  • SomethingPresenter: मैं सच में समझ में नहीं आता यह उपयोग
  • है
  • SomethingController: समझ में नहीं आ भी

मैंने देखा कि एक प्रस्तुतकर्ता और एक नियंत्रक आवश्यक नहीं हैं, लेकिन मैं समझने के लिए क्यों वे यहाँ हैं चाहते हैं । क्या कोई मुझे भूमिका और बता सकता है जब उनका उपयोग करने के लिए?

+1

मैं मानता हूँ, चीजों को एक भ्रमित गुस्सा गड़बड़ को दर्शाता है। – Pierreten

उत्तर

7

मेरे पास exactly the same problem था जब मैं पहली बार प्रिज्म के माध्यम से गया था।

Controllers मूल रूप से तर्क के लिए हैं जो पूरे मॉड्यूल को फैलाता है, जबकि PresentersView के लिए विशिष्ट तर्क के लिए हैं।

उदाहरण के लिए, 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 से जुड़ी है।

+0

ओह, तो यह वर्तमान दृश्य (प्रस्तुतकर्ता) में क्या होता है और मॉड्यूल (नियंत्रक) में क्या होता है, इसके बीच यह एक अलगता है। मैं वास्तव में ViewModel में सभी तर्क सामग्री करता हूं। क्या यह गलत है या यह सिर्फ एक रणनीतिक विकल्प है? – SandRock

+0

'प्रिज्म' सिर्फ एक सिफारिश है। ऐसा कहकर, मैंने कुछ जवाब बनाम प्रस्तुतकर्ता जानकारी के साथ अपना जवाब अपडेट कर लिया है। –

+0

बढ़िया, सब कुछ मेरे सिर में अब स्पष्ट है। मैं अब कोशिश करूँगा। आपके समय के लिए धन्यवाद :) – SandRock

0

यहाँ मेरी राय नियंत्रक में Application Controller

+0

प्रिज्म के लिए यह सच है यदि केवल एक मॉड्यूल है। –

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