关于WPF中承载 ArcGIS控件。

原文 http://www.cnblogs.com/zoe-j/archive/2011/05/18/2050208.html

之前就做过WPF的应用,之前承载的MapGIS的二次开发控件,今天写一下承载的Arcgis的相关控件,

首先,Arcgis的控件不支持WPF,我得环境是vs2010,Engine10,Arcgis的控件支持的还是以前的.net 3.5的winform。但是接触过WPF的都觉得WPF的视觉效果,和用户体验都会比较好,这个时候就需要用承载,WPF的控件中有一个是 windowsformshost的控件,这个可以称为是宿主控件吧,然后它里面可以承载一个winform的子控件。

添加引用

  • ESRI.ArcGIS.AxControls—Contains the AxMapControl.
  • ESRI.ArcGIS.System—Contains the AoInitialiseClass class (used to set up the ArcGIS Engine license).
  • ESRI.ArcGIS.Version—Contains runtime manager functionality to bind a specific ArcGIS installation on the machine.

原理就是这样,接下来讲一下首先呢是建项目,然后选择的时候直接选择.net3.5下面的WPF应用,然后是要添加引用,一个是Arcgis 的 axcontrol一个是 control然后,添加这个引用WindowsFormsIntegration,这个是用来承载控件的引用,然后再xmal下面写好空间里面的这样一 句 xmlns:in="clr-namespace:System.Windows.Forms.Integration;assembly=WindowsFormsIntegration" Loaded="Window_Loaded",然后就可以直接在wpf下面戴上几个WindowsFormsHost这样的控件,定义好名字和大小位 置,然后在c#代码中,windows的load事件中定义几个arcgis的控件,然后再用这样的格式的代码来实现承载

wfhlin.Child = mylincense;

前面的wfhlin是我定义的windowsformshost的名字,后面的mylincense是我定义的一个 axlincense控件

在app.xmal.cs中写好关于权限许可的代码如下

1 protectedoverridevoid OnStartup(StartupEventArgs e)
2 {
3 base.OnStartup(e);

4 InitializeEngineLicense();
5 }
6
7 privatevoid InitializeEngineLicense()
8 {
9 AoInitialize aoi =new AoInitializeClass();
10
11 //More license choices can be included here.
12 esriLicenseProductCode productCode = esriLicenseProductCode.esriLicenseProductCodeEngine;
13 if (aoi.IsProductCodeAvailable(productCode) == esriLicenseStatus.esriLicenseAvailable)
14 {
15 aoi.Initialize(productCode);
16 }
17 }

在调用这个方法的时候

ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.Engine);
时间: 2024-11-17 23:43:01

关于WPF中承载 ArcGIS控件。的相关文章

WPF中使用MediaElement控件来进行音视频播放

WPF中可以使用MediaElement控件来进行音视频播放,然后需要做个进度条啥的,但是MediaElement.Position(进度)和MediaElement.NaturalDuration居然都不是依赖属性,简直不能忍! 好吧,首先说说比较传统的做法(winform?) slider用来显示进度以及调整进度,tb1显示当前进度的时间值,tb2显示视频的时长. player_Loaded 事件中使用DispatcherTimer来定时获取当前视频的播放进度, player_MediaOp

WPF中引入WindowsForms控件的方法_C#教程

本文实例讲述了WPF中引入WindowsForms控件的方法.分享给大家供大家参考,具体如下: 环境: [1]WindowsXP with SP3 [2]VS2008 with SP1 正文: Step1:在现有工程中引入Windows Forms 鼠标右键[References]->选择[Add Reference]->[.NET]标签页 加入[WindowsFormsIntegration]和[System.Windows.Forms]两项 Step2:在XAML文件里加入 [S2-1]加

wpf中的用户控件库项目不能使用WindowsFormsHost??急!!!

问题描述 基于sharpdevelop框架的WPF开发,想在用户控件库项目中使用reportviewer控件,用了WindowsFormsHost,但是运行后不显示reportviewer.如果换成wpf窗体,就能显示reportviewer界面和数据.wpf中的用户控件库项目不能使用WindowsFormsHost吗? 解决方案 解决方案二:WindowsFormsHost是专门为window窗体设计的.放弃吧

关于wpf中dragleave在控件内部触发的解决方案

问题描述 我在Grid中定义dragenter和dragleave,dragenter时向Grid中添加子控件并显示,但保持drag状态到子控件上时就触发了dragleave事件,出现了我不想要的结果,求大神help?只有dragenter和dragleave这两个两个函数 解决方案 解决方案二:已经解决了,貌似使用控件的isenable属性就可以了:-D

WPF中的日历控件

一直很奇怪, WPF中怎么没有日历控件, 这给开发带来了些不便. 这里找到了一个日历控件,是Microsoft开发的, 但其只相当与.net2.0中的普通日历控件,而没有Vista中日历控件那么酷. 本文配套源码

WPF中动态添加控件

问题描述 前提:在VS2008中用WPF(XAML)开打Window窗体内容:如何实现动态添加控件,比如动态添加3列,第一列是ComboBox,第二列是ComboBox,第三列是图片Button(这列你们可以不用关心,我用的是模板)我的思路是在ListView中实现,代码如下XAML的代码:<ListViewGrid.Row="3"Margin="0,5,0,0"Name="lvSelEdit"ItemContainerStyle=&quo

WPF中,日历控件(Calendar )的显示大小或者日期选择控件(DatePicker )的显示大小怎么调整?

问题描述 在网上看了不少资料,貌似没有一个很好的答案.虽然这两个控件都有width和height属性,但是设置之后应该是这个控件所占的控件的大小发生了变化,实际上显示的内容并没有发生变化.似乎说可以写样式可以实现,但是挺麻烦的,不知道大家有没有遇到过这样的问题,怎么修改这两个控件实际显示的大小? 解决方案 解决方案二:你如果会使用Blend,就可以自定它的样式.

VS2010 WPF中的ListView控件一行显示多个数据的问题

问题描述 如何才能够用1个ListView的GridView来实现?我如果向ListView的对象里面添加Item的话是每一列都显示同样的内容.我看到一种使用Data()这个类的方式..但各种引用添加了以后还是提示没有这个类..我需要的是后台实现的办法,前台只涉及到有几列的问题.如果是涉及到数据库的话希望能够解答得详尽一点,谢谢! 解决方案 解决方案二:没有看懂问题解决方案三: 解决方案四:引用1楼ymq_2011的回复: 没有看懂问题 +1

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

原文 http://blog.csdn.net/flexmapserver/article/details/5868882 用Windows Form进行ArcGIS Engine二次开发时常见的形式,当然也可以用WPF来进行ArcEngine的二次开发.         由于WPF很方便承载Windows Form控件,而Map Control.Toolbar Control.TOC Control等都是.NET 控件,当然也可以用XAML来承载ArcEngine的这些控件来开发了.