我有以下设置:
- 跨 xaps/模块拆分的 Silverlight 应用程序
我使用 MEF 作为 DI 框架来连接我的应用程序的各个部分。
我有2个地区:
一个(左侧)填充了列表视图(例如客户)
一个(右侧)填充了一个包含选项卡控件的视图,该选项卡控件具有我填充的区域(根据选择的客户),另一个视图包含带有区域的选项卡控件。
右侧结果:
为了填充第一级选项卡控件,我正在收听“客户更改事件”-(这很好用),当我收到事件时,我用视图填充第一级选项卡区域:
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 它将不会在第二级中被捕获。
为什么我会得到 2 个不同的 EventAggregator 实例?
如何在整个应用程序中共享相同的 EventAggregator 实例?
提前致谢