【问题标题】:WPF Dynamic UserControl ContainerWPF 动态用户控件容器
【发布时间】:2015-03-27 01:49:37
【问题描述】:

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

【问题讨论】:

  • 您的问题主要基于意见,因此与 Stack Overflow 无关。因此,我投票决定关闭它。但是,请查看WPF MVVM navigate views 问题。

标签: c# wpf containers prism


【解决方案1】:

prism 的优点是众所周知,如果您遵循实践,您可以参考 prism 文档。我想说,优势到此为止。

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

假设您的模块由 IModuleImplementation 标识:

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

在您的应用程序中引导您的模块:

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 中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多