gpt4 book ai didi

mvvm - 使用 MEF 动态加载 xap 时如何将参数传递给 xap 文件?

转载 作者:行者123 更新时间:2023-12-03 10:29:52 25 4
gpt4 key购买 nike

嗨,我使用文章 Simplified MEF: Dynamically Loading a Silverlight .xap 创建了一个简单的主应用程序和两个 InjectedApplications(InjectedApplication1 和 InjectedApplication2) .

然后我想做的是我们如何将值从主应用程序传递到注入(inject)应用程序?

这是场景:我有主要应用程序,我在其中按需注入(inject) xap。直到这里一切正常,如上述文章中所述。我需要从那里扩展一些东西:

xap(注入(inject)的)应该具有加载某些特定 ID 值的代码。因此,当我在主应用程序中加载此 xap(加载注入(inject)的 xap 的位置)时,我想将一个值(某些 ID)传递给注入(inject)的 XAP,以便 xap 将加载该特定 ID 的信息。

我们怎样才能做到这一点?

最佳答案

你应该有 Export 注入(inject)应用程序类型的属性。在这些属性中,您可以定义一个接口(interface)。让导出的类型实现相同的接口(interface)。当您使用 MEF 构造对象时,您将可以访问导出的界面。您可以使用它将数据传递给构造的对象。
我建议在单独的共享库项目中定义接口(interface)。
如果你不能或不想这样做,你可以使用像 MVVM Light's 这样的事件聚合器。信使。 Messenger 有一个静态的 Default属性(property)。我很确定这两个 xap 文件将共享相同的默认 Messenger。然后,您可以通过这种方式发送和接收数据。
示例
共享库

public interface IFoo
{
object Data { get; set; }
}
注入(inject)的应用程序
[Export(typeof(IFoo))]
public class Foo : IFoo
{
public object Data { get; set; }
}
主应用
public class Bar
{
[Import]
public IFoo MyFoo { get; set; }
}
现在当您调用 CompositionInitializer.SatisfyImports(this)Bar , MyFoo将设置为 Foo 的实例来自注入(inject)的应用程序。因为这实现了 IFoo,您可以使用此接口(interface)与类 Foo 进行交互.
如果您需要更多说明,我需要查看您的代码。

关于mvvm - 使用 MEF 动态加载 xap 时如何将参数传递给 xap 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10487297/

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