首页 > 解决方案 > 如何从 DemoMap DotSpatial 程序中的插件访问地图控件

问题描述

DotSpatial DemoMap在我的应用程序中使用作为主要前端,并且我创建了许多插件以在启动时加载到 DemoMap 中并且它们正在工作。但是,我不太清楚如何允许我的自定义插件访问主地图控件。

我在DemoMap的主窗体中看到,有一个App.Map属性作为主地图控件的句柄(对吗?),如果这是真的,那么我想我需要在启动时将它传递给每个插件?

最重要的是,允许从所有自定义插件在整个应用程序中访问主地图控件的最有效/最佳方式是什么?(我在 .Net 4.5.2 上使用 DotSpatial 2.0 库)

标签: dotspatial

解决方案


通过属性派生Extension并访问AppManger-supplied 地图。App.Map

扩展(插件)可以通过App.Map属性访问地图。任何派生自的类都可以访问它,Extension因此不需要将其传递到插件中。允许您访问该属性的 AppManager 是通过 MEF 自动注入的。

这是一个示例扩展

public class SimpleMapPlugin : Extension
{
    public SimpleMapPlugin()
    {
        // Access App.Map as needed.
    }
}

推荐阅读