原文 http://www.gisall.com/html/47/122747-4038.html

WPF(Windows Presentation Foundation)是美国微软公司推出.NET Framework 3.0的组成部分之一,它是一套基于XML、.NET Framework、矢量绘图(vector graphic)技术的展示层(presentation layer)开发框架,微软视其为下一代用户界面(user interface)技术,将广泛被用于下一代的Windows平台(Windows Vista)的界面开发。

WPF使用一种新的XAML(eXtensible Application Markup Language)语言来开发界面,这将把界面开发以及后台逻辑很好的分开,降低了耦合度,使用户界面设计师与程序开发者能更好的合作,降低维护和更新的成本。

而ArcGIS Engine开发包只提供了WinForm控件,如Map Control、Toc Control、Toolbar Control等。那么假如我们要在WPF程序中使用ArcGIS Engine,那应该如何调用呢?

ArcGIS Engine为我们提供了两中途径:

<!--[if !supportLists]-->1、 <!--[endif]-->使用WindowsFormsHost管理ArcGIS Engine WinForm控件,并进行互操作。

<!--[if !supportLists]-->2、 <!--[endif]-->使用WindowsFormHost加载WinForm窗体,这样在WinForm中就能像平时一样加载Engine的控件了。

第一种方法需要使用代码了加载值Engine控件,示例代码如下:

首先在主程序的Xaml文件里添加WindowsFormsHost对象:

<my:WindowsFormsHost Name="mapHost" Margin="174,30,0,22" />

然后在主程序的构造函数里添加代码加载Engine控件

mapControl = new AxMapControl ();

mapHost.Child = mapControl;

这样就可以把Engine的WinForm控件加载到WPF程序中了。

这种方式的缺点就是,无法通过Visual Studio的用户设计界面来设置控件的属性。

第二种方法的思路如下:

在WPF程序中添加一个WinForm窗体对象,里面可以自由地使用Engine控件。

然后在WPF主程序中,通过某项事件,如Application的StartUp事件,实例化该窗体,并调用它的show方法显示。

当使用这两种方法来调用Engine控件时,都不要忘记,ArcGIS 10在调用所有ArcObject对象前,都需要进行运行时绑定,示例代码如下:

ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.Engine);

如何在WPF程序中使用ArcGIS Engine的控件的更多相关文章

  1. 使用XAML在WPF项目中承载ArcGIS Engine地图控件开发

    原文 http://blog.csdn.net/flexmapserver/article/details/5868882 用Windows Form进行ArcGIS Engine二次开发时常见的形式 ...

  2. WPF 程序如何移动焦点到其他控件

    原文:WPF 程序如何移动焦点到其他控件 WPF 中可以使用 UIElement.Focus() 将焦点设置到某个特定的控件,也可以使用 TraversalRequest 仅仅移动焦点.本文介绍如何在 ...

  3. 如何在wpf程序中使用DependencyProperty

    作为例子,我决定定义一个MyBorderEx,在WPF常用的"Border"控件中创建一个名为Transparency的属性,来指示它的透明度,这个属性值在0-255间变化,255 ...

  4. WPF窗体中嵌入/使用WinForm类/控件(基于.NET Core)

    如题,WPF中嵌入WinForm的做法,网络上已经很多示例,都是基于.NET XXX版的. 今天King様在尝试WPF(基于.NET Core 3.1)中加入Windows.Forms.ColorDi ...

  5. 【转载】在程序中动态改变static text控件的caption值

    方法1,给STATIC控件取个名字叫IDC_STATICTITLE 然后在ClassWizard中设定一个控件变量给它叫m_statictitle 然后用m_statictitle.SetWindow ...

  6. ArcGIS Engine 笔记-控件类型

    控件 MapControl Map         地图控件 PageLayouControl      布局地图控件 TOCControl                目录控件 ToolbarCo ...

  7. 在WPF程序中使用摄像头兼谈如何使用AForge.NET控件(转)

    前言: AForge.NET 是用C#写的一个关于计算机视觉和人工智能领域的框架,它包括图像处理.神经网络.遗传算法和机器学习等.在C#程序中使用摄像头,我习惯性使用AForge.NET提供的类库.本 ...

  8. 在 WPF 程序中应用 Windows 10 真?亚克力效果

    原文:在 WPF 程序中应用 Windows 10 真?亚克力效果 从 Windows 10 (1803) 开始,Win32 应用也可以有 API 来实现原生的亚克力效果了.不过相比于 UWP 来说, ...

  9. 【msdn wpf forum翻译】如何在wpf程序(程序激活时)中捕获所有的键盘输入,而不管哪个元素获得焦点?

    原文:[msdn wpf forum翻译]如何在wpf程序(程序激活时)中捕获所有的键盘输入,而不管哪个元素获得焦点? 原文链接:http://social.msdn.microsoft.com/Fo ...

随机推荐

  1. yum 配置详解(转发)

    一.yum 简介 yum,是Yellow dog Updater, Modified 的简称,是杜克大学为了提高RPM 软件包安装性而开发的一种软件包管理器.起初是由yellow dog 这一发行版的 ...

  2. HDU4171--bfs+树

    第一开始想成了DP.尼玛后来才发现只有N条边,那就简单了.. 从起点S遍历整棵树,从某点跳出来回到终点T,问最短路长度.然而从某点跳出时走过的路径是一个定值.... 长度为整棵树的边长和sum*2-d ...

  3. 单链表之C++实现

    在实现单链表时要注意对单链表的逻辑存储.物理存储有清晰的概念. 如上图链表已经完成,其逻辑结构如上.当需要对其进行操作,比如插入.删除,通常需要引 入指针,如上的ptr1.ptr2.在编程时一定要注意 ...

  4. vue-router 快速入门

    ue-router是Vue.js官方的路由插件,它和vue.js是深度集成的,适合用于构建单页面应用.vue的单页面应用是基于路由和组件的,路由用于设定访问路径,并将路径和组件映射起来.传统的页面应用 ...

  5. el表达式判断是否相等

    <c:if test="${order.baofang eq 0 }"> 无包间 </c:if> <c:if test="${order.b ...

  6. nopCommerce架构分析系列(二)数据Cache

    原文(http://www.cnblogs.com/gusixing/archive/2012/04/12/2443799.html)非常感谢作者顾思行的分享! 序言 在很多访问量较大的系统中,尤其在 ...

  7. 关于找工作(二 Cover Letter)

    准备好了简历,下一个文档就是cover letter了.其实对衡量你是否是一个好的候选人来说,cover letter的作用几乎是零(很多情况下主管技术工作的人或者雇人经理根本见不到cover let ...

  8. studio中集成.so文件的两种方式

    .so文件作为NDK的开发包,如果不进行依赖使用将会报错所以,需要.so的一定要配置 注:如果没有引用so文件,可能会在程序执行的时候加载类库失败,有类似如下的DEBUG提示:    java.lan ...

  9. OpenCV——视频颜色识别

    #include <opencv2/opencv.hpp> #include <iostream> using namespace std; using namespace c ...

  10. VLD 1.0 ReadMe翻译尝试

    近期想学习下VLD的实现,打算从最简单的V1.0版本看起.以下是V1.0版本自己尝试翻译下,最新的2.x版本似乎强大了很多. 简介 Visual C++提供了内置的内存检测机制,但其充其量只满足了最小 ...