棱镜中的事件过滤器和多个模块实例
Events filters and multiple instance of modules in prism
我正在使用 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 值(是否可以从视图模型或解决方案是别的吗?
该模块对模块目录一无所知,因此(在 Prism 上下文中)多次加载一个模块没有意义。
如果你想要一个摄像头驱动程序的两个实例(具有两种不同的配置),你必须将配置加载到驱动程序(如果它直接注册到容器)或驱动程序管理器(如果你需要更多比容器所能提供的还要多)。
一旦相机驱动程序拥有其配置数据,它就可以使用它来将其输出定向到特定的处理单元。
旁注:我会检查像 TPL Dataflow 这样的工具是否比事件聚合器更适合链接组件。
我正在使用 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 值(是否可以从视图模型或解决方案是别的吗?
该模块对模块目录一无所知,因此(在 Prism 上下文中)多次加载一个模块没有意义。
如果你想要一个摄像头驱动程序的两个实例(具有两种不同的配置),你必须将配置加载到驱动程序(如果它直接注册到容器)或驱动程序管理器(如果你需要更多比容器所能提供的还要多)。
一旦相机驱动程序拥有其配置数据,它就可以使用它来将其输出定向到特定的处理单元。
旁注:我会检查像 TPL Dataflow 这样的工具是否比事件聚合器更适合链接组件。