Silverlight 4.0 多个应用程序在一个';壳牌公司';
我正在尝试使用MEF来实现这一点,但可能我使用了错误的技术 我有两个应用程序(两个都是现在更多的想法),一个是我正在转换为Silverlight的桌面应用程序。另一个只是一个适合同一结构的想法。我希望将这两个应用程序作为独立的自包含应用程序,并在shell站点中运行它们。我一直试图从MEF开始,但我对它了解得还不够,无法确定我是否做错了什么,或者这不是正确的技术 目前,我正在使用MVVM light作为我的框架,我已经在这方面取得了巨大的成功,并且现在对它非常熟悉。我的每个应用程序都是自包含的……这意味着如果我将它们设置为从我的Web服务器独立运行,我可以自己使用它们 当我尝试使用mef将它们放入shell时,问题就出现了 这是我的第一个modulecontainer的代码:Silverlight 4.0 多个应用程序在一个';壳牌公司';,silverlight-4.0,mvvm,mef,mvvm-light,Silverlight 4.0,Mvvm,Mef,Mvvm Light,我正在尝试使用MEF来实现这一点,但可能我使用了错误的技术 我有两个应用程序(两个都是现在更多的想法),一个是我正在转换为Silverlight的桌面应用程序。另一个只是一个适合同一结构的想法。我希望将这两个应用程序作为独立的自包含应用程序,并在shell站点中运行它们。我一直试图从MEF开始,但我对它了解得还不够,无法确定我是否做错了什么,或者这不是正确的技术 目前,我正在使用MVVM light作为我的框架,我已经在这方面取得了巨大的成功,并且现在对它非常熟悉。我的每个应用程序都是自包含的…
public partial class MEFDoctorsModuleContainer : Page, IPartImportsSatisfiedNotification
{
private System.Uri _requestedUri;
public MEFDoctorsModuleContainer()
{
InitializeComponent();
}
[Import]
public IDeploymentCatalogService CatalogService { get; set; }
[ImportMany(AllowRecomposition = true)]
public Lazy<UserControl, IMetadataContent>[] MEFModuleList { get; set; }
// Executes when the user navigates to this page.
protected override void OnNavigatedTo(NavigationEventArgs e)
{
_requestedUri = e.Uri;
CompositionInitializer.SatisfyImports(this);
}
public void OnImportsSatisfied()
{
CatalogService.AddXap("WavelengthIS.Referee.PhysicianMaster.xap");
//MEFModuleList.ToList()
// .ForEach(module =>
// {
// if ((module.Metadata.ContainerType == this.GetType().ToString() &&
// (module.Value.GetType().ToString() == "WavelengthIS.Referee.PhysicianMaster.MainPage.xaml")))
// {
// content.Items.Add(module.Value);
// }
// });
MEFModuleList.ToList()
.ForEach(delegate(Lazy<UserControl, IMetadataContent> module)
{
if ((module.Metadata.ContainerType == this.GetType().ToString() && (module.Value.GetType().ToString() == "WavelengthIS.Referee.PhysicianMaster.App.xaml")))
content.Items.Add(module.Value);
});
}
}
}
过去是这样的
(module.Value.GetType().ToString() == "WavelengthIS.Referee.PhysicianMaster.MainPage.xaml")))
但我认为这是行不通的,因为我实际上是在导入一个应用程序,而不仅仅是一个页面
所以我的问题是:考虑到我正在努力做什么,我的最佳选择是什么?
我不是停留在MEF上,但我确实需要一个Shell应用程序,它使用SL4中的导航框架将standalones加载到MEF中。我要求MVVM Light工作,因为我非常喜欢这个框架,即使我编写的MVVM企业应用程序没有它,我还是喜欢把它放在我的技巧包里。我不喜欢hocus pocus…IOC和依赖项注入是不可能的,因为我还不习惯使用这项技术,如果我需要使用它,我会找到其他方法来实现这一点。尝试让ViewModelLocator保持动态,如本文所示: 它适用于我在WPF,也应该在SL4。MEF是正确的方法。我在WPF中一次又一次地做了几乎相同的事情,使用MEF和MVVM light。这里也没有骗局…:)
(module.Value.GetType().ToString() == "WavelengthIS.Referee.PhysicianMaster.MainPage.xaml")))