WPF动态用户控件容器

时间:2015-03-27 01:49:38

标签: c# wpf containers prism

我的任务是创建一个UI容器,其中将自动从DLL加载不同的UI。这些UI或视图将遵循通用界面。在程序集中还将显示有关要显示为树视图的设置的信息。使用WPF在c#中创建此类解决方案的最佳实践是什么?棱镜似乎是要走的路 - 你同意吗?

1 个答案:

答案 0 :(得分:0)

棱镜的优点是,它是众所周知的,如果你遵循这些做法,你可以参考棱镜文档。我会说,这里的优点结束了。

您可以使用像Unity或MEF这样的IoC容器来加载模块并向模块注入一些IApplicationContext实现。然后,您的模块将向ApplicationContext注入内容。这里不需要棱镜。

让我们假设您的模块由IModuleImplementation标识:

public interface IModule
{
    void Initialize(IApplicationContext applicationContext);
}

在你的应用程序bootstrapp你的模块:

public void Bootstrap()
{
    var applicationContext = new ApplicationContext();
    IModule[] modules = LoadModulesFromDirectoryAssemblies();
    foreach (var module in modules)
    {
        module.Initialize(applicationContext);
    }
}

并且模块将注入所需的任何内容:

public class Module1 : IModule
{
    public void Initialize(IApplicationContext applicationContext)
    {
        //inject Module1 services, views, menuitems, command etc. to applicationContext.
    }
}

然后,您的shell窗口将在应用程序上下文中注入内容并在UI中反映出来。