事件过滤器和棱镜中模块的多个实例



我正在使用Prism编写WPF应用程序,我是Prism 的新手

我面临以下问题:

我将创建与事件耦合的模块,在我的情况下,模块将从相机获取图像,并将其发送到处理图像的模块。现在,我正在通过传递一个字符串来进行模拟,就像Prism的事件聚合器样本14中一样。

我创建了两个类似的模块

moduleCatalog.AddModule<ModuleProcess.ModuleProcessModule>("ModuleProcess-1");
moduleCatalog.AddModule<ModuleProcess.ModuleProcessModule>("ModuleProcess-2");

现在,如果我实例化2个摄像头模块和2个进程模块,我希望能够像这样进行过滤,以便进程1只监听来自摄像头1的事件(例如ID(

所以在我的ViewModel 的构造函数中

_ea.GetEvent<MessageSentImageEvent>().Subscribe(MessageImageReceived, x => x._iDest == iId);

我的消息支付宝是这样的

public class MessageImagePayload
{
public int _iDest;
//...
}

我不明白的是,当创建模块时,如何在视图模型中设置iId值(是否有可能从视图模型中找到原始模块名称("ModuleProcess-1"(,或者解决方案是其他的?

模块对模块目录一无所知,因此(在Prism上下文中(多次加载一个模块是没有意义的。

如果您想要一个相机驱动程序的两个实例(具有两种不同的配置(,则必须将配置加载到驱动程序(如果它直接在容器中注册(或驱动程序管理器(如果您需要容器所能提供的更多(中。

一旦相机驱动程序有了配置数据,它就可以使用这些数据,例如,将其输出引导到特定的处理单元。

附带说明:我想检查一下像TPL Dataflow这样的工具是否比事件聚合器更适合链接组件。

最新更新