我不知道如何将参数从其他 View 或 View 模型传递到我的 View 模型。
例如,我有一个名为 Customers 的 View 。里面有一个网格,如果双击网格,应该会出现一个新 View 并允许您编辑该客户的数据。但是,如果我不能在内部传递任何参数,负责编辑数据的 View(Model) 将如何知道它应该打开哪个客户?
EventAggregator 是不可能的,因为我显然不能为一个 View 创建数百个事件参数。此外,这是一个糟糕的解决方案。
到目前为止,我能够想出:
CustomerDataView custView = new CustomerDataView(customerId, currentContext);
manager.Regions[RegionNames.Sidebar].AddAndActivate(custView);
您如何看待这个特定的解决方案?这是通常的做法吗? 我不喜欢的是我失去了 Unity 的自动依赖注入(inject)。
最佳答案
或者,您可以将 Unity 升级到支持“参数覆盖”的最新版本。
MyType mt = container.Resolve<MyType>(
new ParameterOverride("customerId", customerId));
这就是我所做的。我们发现子容器保持对其父容器的循环引用并且无法正确收集(内存泄漏),因此我们升级并选择了这种方法。
关于c# - 将参数传递到 ViewModels (Prism),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2524455/