gpt4 book ai didi

mvvm - prism中的事件过滤器和模块的多个实例

转载 作者:行者123 更新时间:2023-12-03 10:41:18 24 4
gpt4 key购买 nike

我正在使用 Prism 编写 WPF 应用程序,我是 Prism 的新手
我面临以下问题:
我将创建将与事件耦合的模块,在我的情况下,模块将从相机获取图像并将其发送到将处理图像的模块。现在我通过传递一个字符串来模拟,就像来自 Prism 的事件聚合器示例 14 中一样。
我像这样创建两个模块

moduleCatalog.AddModule<ModuleProcess.ModuleProcessModule>("ModuleProcess-1");
moduleCatalog.AddModule<ModuleProcess.ModuleProcessModule>("ModuleProcess-2");
现在,如果我实例化 2 个摄像头模块和 2 个进程模块,我希望能够像这样进行过滤,以便进程 1 只监听来自摄像头 1 的事件(例如使用 Ids)
所以在我的 ViewModel 的构造函数中
_ea.GetEvent<MessageSentImageEvent>().Subscribe(MessageImageReceived, x => x._iDest == iId);
我的消息paylod是这样的
public class MessageImagePayload
{
public int _iDest;
//...
}
我不明白的是如何在创建模块时在 View 模型中设置 iId 值(是否可以从 View 模型中找到原始模块名称(“ModuleProcess-1”)或者解决方案是别的什么?

最佳答案

该模块对模块目录一无所知,因此(在 Prism 上下文中)多次加载一个模块是没有意义的。
如果您想要一个相机驱动程序的两个实例(具有两种不同的配置),则必须将加载配置放入驱动程序(如果它直接在容器中注册)或驱动程序管理器(如果您需要的不仅仅是容器可以提供的)。
一旦相机驱动程序获得其配置数据,它就可以使用它来例如将其输出定向到特定的处理单元。
旁注:我会检查 TPL Dataflow 之类的东西是否不是比事件聚合器更好的链接组件的工具。

关于mvvm - prism中的事件过滤器和模块的多个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65697785/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com