मैं निम्नलिखित सेटअप:प्रिज्म: EventAggregator और MEF - EventAggregator
- xaps/मॉड्यूल भर में एक Silverlight अनुप्रयोग विभाजन
मैं डि ढांचे के रूप में MEF का उपयोग विभिन्न भागों कनेक्ट करने के लिए मेरे आवेदन का
2 क्षेत्रों है:
एक (बाएं से एक) के साथ एक सूची दृश्य (जैसे ग्राहकों के लिए)
एक (सही) से भर जाता है युक्त एक दृश्य के साथ से भर जाता है क्षेत्र के साथ एक tabcontrol जो मैंने पॉप्युलेट किया ( के अनुसार ग्राहक को चुना गया है) के साथ एक अन्य दृश्य में एक क्षेत्र के साथ एक टैब नियंत्रण होता है।
दाईं ओर परिणाम:
प्रथम स्तर TabControl मैं "ग्राहक बदल घटना" सुन रही हूँ भर दें - और (इस महान काम करता है) जब मैं घटना मैं पॉप्युलेट प्राप्त मिल दृश्य के साथ पहली स्तर टैब क्षेत्र:
Dim lReg As IRegion = Me.mRegionManager.Regions("FirstLevelTabReqion")
Dim lViewID As String = CommonDefinitions.Constants.BuildFirstLevelViewName(lUniqueID)
Dim lFirstLevelView FirstLevelView = TryCast(lReg.GetView(lRqViewID), FirstLevelView)
If lFirstLevelView Is Nothing Then
lFirstLevelView = New FirstLevelView()
Dim lRegMan1 As IRegionManager = lReg.Add(lFirstLevelView, lViewID, True)
lFirstLevelView.SetRegionManager(lRegMan1)
...
End If
नोट: जब FirstLevelView मैं एक CompositionInitializer.SatisfyImports
कॉल में फेंक करने के लिए है बनाने FirstLevelView सुनिश्चित करने के लिए इसके ViewModel संदर्भ को हल करता है।
SecondLevel ViewModel में EventsAggregator का एक उदाहरण प्राप्त करने के लिए मैं का उपयोग करें:
<ImportingConstructor()>
Public Sub New(ByVal iEvAggregator As IEventAggregator)
EventAggregator = iEvAggregator
EventAggregator.GetEvent(Of DoStuffSecondLevel).Subscribe(AddressOf OnDoStuffSecondLevel, True)
End Sub
मेरे समस्या यह है कि EventAggregator उदाहरण मैं दूसरे स्तर दृश्य मॉडल में मिलता प्रथम स्तर में EventAggregator उदाहरण से अलग है इसलिए यदि मैं पहले स्तर पर DoStuffSecondLevel प्रकाशित करता हूं तो यह दूसरे स्तर पर नहीं पकड़ा जाएगा।
मुझे EventAggregator के 2 अलग-अलग उदाहरण क्यों मिलते हैं?
एप्लिकेशन भर में EventAggregator का एक ही उदाहरण साझा करने के लिए मैं क्या कर सकता हूं?
अग्रिम
मैं इस में जोड़ना चाहता हूं कि मैं एक ही मुद्दे में भाग गया। मुझे एक समाधान चाहिए जहां मुझे 'घटक प्रारंभकर्ता। सत्सिफी आयात (यह) का उपयोग करके समान इंस्टेंस प्राप्त होता है;' मैंने 'घटक प्रारंभकर्ता। सत्सिफी आयात (...)' का उपयोग किया ताकि मैं नया()) अन्य (मेरे) अपने राज्यों को मैन्युअल रूप से रीसेट नहीं करना है), जिसने मुझे संतुष्ट आयात का उपयोग करने के लिए प्रेरित किया ताकि मैं अपनी सेवाएं, मुख्य रूप से EventAggregator प्राप्त कर सकूं। – michael
कृपया कुछ चीजें जांचें: 1. जब आप अपना एमईएफ कंटेनर कॉन्फ़िगर करते हैं, तो क्या आप CreationPolicy.NonShared पर डिफ़ॉल्ट निर्माण नीति सेट कर रहे हैं? 2. क्या आपके पास अपने EventAggregator कक्षा पर PartCreationPolicy विशेषता है? 3. क्या यह संभव है कि आप SecondLevelViewModel के लिए एक अलग कंपोज़िशनकंटर ऑब्जेक्ट बना रहे हों? –