我正在使用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这样的工具是否比事件聚合器更适合链接组件。