У меня есть следующие настройки:
- Приложение Silverlight разделено на xaps / modules
Я использую MEF в качестве инфраструктуры DI для подключения различных частей моего приложения.
У меня есть 2 региона:
Одна (левая) заполняется списком (например, клиенты)
Один (правый) заполняется представлением, содержащим элемент управления табуляции с областью, которую я заполнил (в соответствии с выбранным клиентом), другим представлением, содержащим элемент управления вкладкой с регионом.
Результат справа:
Чтобы заполнить 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.
Чтобы получить экземпляр tEventsAggregator во второй модели ViewLevel, которую я использую:
<ImportingConstructor()>
Public Sub New(ByVal iEvAggregator As IEventAggregator)
EventAggregator = iEvAggregator
EventAggregator.GetEvent(Of DoStuffSecondLevel).Subscribe(AddressOf OnDoStuffSecondLevel, True)
End Sub
Моя проблема в том, что экземпляр EventAggregator, который я получаю в модели представления второго уровня, отличается от экземпляра EventAggregator на первом уровне, поэтому, если я опубликую DoStuffSecondLevel наПервый уровень не будет перехвачен на втором уровне.
Почему я получаю 2 разных экземпляра EventAggregator?
Что я могу сделать, чтобы использовать один и тот же экземпляр EventAggregator в приложении?
Заранее спасибо