如何显示满足所有导入的UserControl

时间:2010-05-18 14:51:40

标签: c# silverlight-4.0 mef

我遇到了Silverlight 4 / MEF的一些问题。我有一个基本的框架设置,核心是Silverlight导航应用程序。

Image link到图表中进行说明

主应用程序(Desu)包含一些页面和控件,可以很好地导出。我动态地从Desu.Controls加载控件(比如我用IImageViewer接口识别的imageviewer)和Desu.Pages的一些页面。

我遇到的第一个问题是动态加载页面并能够导航到这些页面(例如,当从xap加载Desu.Pages时使用dummyhttp://blagh/desutestpage.aspx#/Activation)。我通过使用自定义MetaAttribute和自定义内容加载器解决了这个问题。

现在问题部分: 我想从Desu中的HomePage中的Desu.Controls加载ImageViewerControl。我没有将Desu.Controls加载到包中。当我尝试加载控件时,它给了我CompositionException,因为它无法满足ImageViewControl导入。我尝试设置AllowRecomposition = true但这没有帮助。

因此可以在不满足所有导入的情况下加载控件,如果是,那么如何执行此操作?

1 个答案:

答案 0 :(得分:1)

因此,您希望最初不满足导入,但是您希望稍后添加导入?

您在设置AllowRecomposition = true的情况下走在正确的轨道上,但您还需要设置AllowDefault = true。如果ImageViewerControl不可用,则该属性将为null,并且在可用时将设置该属性。